WKWebView無法接受到JS呼叫原生方法的回撥.
專案中,我們使用了UIWebView,Web端用MobileSelect.js,我們UIWebView始終無法彈出列表選擇框,無奈之下,改用了WKWebView.
WKWebView效能真的是比UIWebView好,但是缺點呢,網上也有很多談到的,也就不囉嗦了.
我在網上搜索WKWebView如何注入JS物件,在JS中呼叫原生的方法時,遇到點小問題,也是自己粗心吧.
在JS程式碼中,我們這樣寫
`window.webkit.messageHandlers.AppModel.postMessage(); 專案中,我們使用了UIWebView,Web端用MobileSelect.js,我們UIWebView始終無法彈出列表選擇框,無奈之下,改用了WKWebView.
WKWebView效能真的是比UIWebView好,但是缺點呢,網上也有很多談到的,也就不囉嗦了.
我在網上搜索WKWebView如何注入JS物件,在JS中呼叫原生的方法時,遇到點小問題,也是自己粗心吧.
在JS程式碼中,我們這樣寫
window.webkit.messageHandlers.AppModel.postMessage();
JS呼叫了這個方法,我們iOS卻始終拿不到回撥,很煩,根據網上的教程,看一點也沒錯啊,最後我通過除錯JS程式碼,看到window這個物件裡面的引數那裡有好多報紅,好像和引數有關,於是我讓Web端同事,改為:
window.webkit.messageHandlers.AppModel.postMessage(null);
這樣一來就可以接受到回調了,也許是我思想上先入為主了吧,認為不需要傳引數,直接就不寫了,其實不行.
WKWebView與JS互動上,網上的教程寫的都很詳細,不過有一點我不太滿意的是,授人以魚不如授人以漁,比如說:
這篇部落格(http://blog.csdn.net/woaifen3344/article/details/49452227),寫的很詳細,但是: window.webkit.messageHandlers.AppModel.postMessage({body: ‘xxx’}) 為什麼JS呼叫的是這個方法?這個方法作者是怎麼知道的?很多部落格上都沒提到過,至少是在我所搜尋到的部落格上面,都沒提及,原來是在WKUserContentController.h裡面提到的.
我們不能要求別人告訴我們,但是我覺得如果把出處列出來,也許會對新手更友好…好了不說這些.
Peace out