1. 程式人生 > >安卓內嵌 webview 不能執行 javascript 的原因

安卓內嵌 webview 不能執行 javascript 的原因

 

安卓內嵌 webview 不能執行 javascript 的原因:

  1. webview 的設定不對。在 RN 框架裡面使用的webview 預設設定是不會有這個問題的。所以不用怎麼懷疑RN的配置。可檢查的引數

    1. settings.setJavaScriptEnabled(true);

    2. settings.setDomStorageEnabled(true);

  2. WebView.setWebChromeClient(new WebChromeClient());  是否有裝置。 RN 框架預設是有設定的。

  3. 因為 webview 核心差異,有的手機可以,有的外部瀏覽器可以但內嵌瀏覽器不可以。這是因為各種核心各個版本的瀏覽器核心對javascript語言的支援不一樣,特性不一樣。比如 ES6 的支援,只要網頁程式碼裡面出現 es6 的東西比如 let 宣告,一些低版本的系統(android 5.x 以及以下)不能正常執行,並且在 js 的節點裡面的所有 js 程式碼,都會失效,包括 console.log , alert 等跟蹤日誌的手段都沒用了。

  4. 當需要訪問其他協議進行跳轉的時候不能開啟微信、支付。需要檢查 shouldOverrideUrlLoading 裡面是否有做 intent 的跳轉。(只是最近碰到的問題,列在一起)

  5. 系統瀏覽器對一些控制元件做了限制,比如 vivo android 5.1.1 系統裡面,把 alert 給遮蔽掉了。

  6. 其他待補充

 

 

除錯小結:

  1. 安卓如何檢視 webview 內的輸出日誌( console.log ) ?

    1. https://my.oschina.net/xmlspyspring/blog/126045

  2. 安卓使用 chrome 進行除錯內嵌瀏覽器:

    1. 在原始碼裡面找到 webview 建立的地方,插入程式碼:   WebView.setWebContentsDebuggingEnabled(true);   。

    2. 在電腦上開啟 chrome - dev tool(快捷鍵 command + option + i) 

    3. 點 更多- more tool - remote device 。

    4. 看到已經連上的安卓裝置,選擇展示出來的這個手機上已經顯示的網頁連結 右側有一個 【inspect】,點選之後,就可以實時除錯了。需要重新重新整理網頁的話,也只需要 command + r

  3. 再補充一個蘋果除錯網頁方式

    1. iphone 裡面 設定-safari -高階選項 - 開啟“javascript” 和 “web 檢查器"

    2. 電腦上開啟 safria  , 偏好設定 - 高階 - 勾選“在選單欄中顯示 開發 選單”

    3. safria -  開發 - xxx 的 iphone - 選擇一網頁

    4. ok 可以除錯了

 

各個手機上網頁展示不同的原因主要是 核心差異。核心的差異點有 ???  當碰到這個手機可以,那個手機不可以的時候,對比一下安卓系統版本,瀏覽器版本,品牌。