<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                &emsp;&emsp;在 iOS 12 中,蘋果正式棄用 UIWebView,改成 WKWebView,參考[官方聲明](https://developer.apple.com/documentation/webkit/replacing_uiwebview_in_your_app)。 &emsp;&emsp;后者在性能、穩定性、功能方面有很大提升,并且與 Safari 具有相同的 JavaScript 引擎(JavaScriptCore)。 &emsp;&emsp;從 Android 4.4 開始,增加 Chromium WebView,用來取代 Android WebKit WebView。 &emsp;&emsp;從 Android 5.0 開始,Chromium WebView 支持以 Android System WebView App 的形式在應用商店中下載,可獨立升級。 &emsp;&emsp;Android 可以在 App 中集成其他 WebView 組件,例如如 TBS X5 內核的 WebView,或者集成其他 JavaScript 引擎(默認采用 V8 引擎),例如為 React Native 專門優化的 Hermes。 &emsp;&emsp;而 iOS 上就只能使用系統內置的 WebView。由此可知,iOS 和 Android 對于 CSS 和 JavaScript 的支持度各不相同,在研發時需要注意兼容性。 ## 一、調試的困難 &emsp;&emsp;在客戶端中調試網頁,不像在 PC 的瀏覽器有那么完善的控制臺,對于網頁的各方面都能一目了然。 :-: ![](https://img.kancloud.cn/61/9c/619c37fc5d9923d778ad6c521a376692_1941x1113.png =800x) **1)注入腳本** &emsp;&emsp;若要調試此類頁面,需要些方法,比較常見的有在頁面中加入[vConsole](https://github.com/Tencent/vConsole)腳本,生成一個控制臺。 :-: ![](https://img.kancloud.cn/3f/f9/3ff9edc2ce7e94379bca14a2f4846300_400x711.jpeg =300x) &emsp;&emsp;還有一個[PageSpy](https://github.com/HuolalaTech/page-spy-web)是一款適用于遠程 Web 項目調試的工具(可在異地調試),需要在頁面注入腳本,并且還需要在服務器中部署一套控制臺系統。 :-: ![](https://img.kancloud.cn/19/db/19dbb59a5b3b7edc1eafd7688b65b5f6_1316x851.png =800x) **2)抓包工具** &emsp;&emsp;或者借助[Charles](https://www.charlesproxy.com/)、[Fiddler](https://www.telerik.com/fiddler)這類抓包工具來查看網絡通信、映射本地腳本等。 :-: ![](https://img.kancloud.cn/de/a3/dea37b6d1af2bb0578d032b4a82eacf4_2058x1382.png =800x) &emsp;&emsp;不過在 Android 6.0 之后,不會信任從抓包工具導出的根證書,這就導致無法在抓包工具中瀏覽 HTTPS 通信,不過 iOS 沒有這方面的限制。 &emsp;&emsp;而網頁中的某些業務可能需要借助客戶端的能力(JSBridge)才能完成,但這塊無法在 PC 瀏覽器中實現。 &emsp;&emsp;由此可見,需要有種辦法能夠調試 iOS 和 Android 兩種客戶端中的網頁。 ## 二、iOS &emsp;&emsp;iOS 的調試比較簡單,可以借助 Safari 瀏覽器實現。 **1)顯示開發** &emsp;&emsp;首先顯示 Safari 瀏覽器的“開發”菜單。 &emsp;&emsp;以 macOS 為例,偏好設置 > 高級,然后勾選“在菜單欄中顯示開發菜單”。 :-: ![](https://img.kancloud.cn/92/f3/92f36a8a6a1679e94b90481a3acadb26_1536x874.png =600x) **2)開啟調試** &emsp;&emsp;然后是開啟 iPhone 的 Safari 調試模式,設置 > Safari瀏覽器 > 高級 > 網頁檢查器 > 啟用。 :-: ![](https://img.kancloud.cn/51/06/51061dab33451cbd43445d470b6e4180_1242x1030.png =300x) **3)兩端聯調** &emsp;&emsp;現在就可以開始調試了,將手機用數據線與電腦連接。 &emsp;&emsp;在訪問頁面后,選中開發菜單,找到對應的手機,就能看到訪問中的網頁地址。 :-: ![](https://img.kancloud.cn/09/9a/099a3ee177a3270a0a495a451b3d2510_2026x468.png =800x) **4)調試窗口** &emsp;&emsp;點擊頁碼地址,進入調試窗口,常規的諸如網絡、元素等調試模塊都有。 :-: ![](https://img.kancloud.cn/f3/75/f3750a4630dde9f458508b2b1ab16f72_2000x1300.png =800x)   除了能映射客戶端 WebView 中的網頁之外,Safari 瀏覽器中的頁面也能同步映射到調試窗口。 ## 三、Android &emsp;&emsp;Android 配置調試的過程比較波折,可以借助 Chrome 瀏覽器實現。 **1)顯示開發者選項** &emsp;&emsp;首先需要在手機中顯示開發者選項,默認是隱藏的,各款手機的開啟過程可能略有不同。 &emsp;&emsp;以小米為例,我的設備 > 全部參數與信息 > MIUI版本,點擊 5~8 下,就會有一個開發者模式開啟的提示。 :-: ![](https://img.kancloud.cn/de/45/de45f1dc7624e24609ad00bc9f3d08d1_485x675.png =300x) **2)開啟 USB 調試** &emsp;&emsp;然后進入更多設置,翻到最后就能看到開發者選項菜單,進入后,開啟 USB 調試。 :-: ![](https://img.kancloud.cn/d5/c9/d5c91920344e360eecd326be24332143_459x485.png =300x) **3)Chrome Inspect** &emsp;&emsp;接著打開電腦的 Chrome 瀏覽器,輸入 chrome://inspect。 :-: ![](https://img.kancloud.cn/09/25/09255804f30ed91dd00d640fff430b05_1152x554.png =600x) &emsp;&emsp;現在可以在客戶端中訪問網頁,下圖的 WebView 表示客戶端環境,點擊 inspect。 :-: ![](https://img.kancloud.cn/5d/93/5d9314fc188b68a9d37ab020806852b2_1802x892.png =600x) &emsp;&emsp;應該是彈出控制臺,但是卻發生了錯誤,提示 HTTP/1.1 404 Not Found。 :-: ![](https://img.kancloud.cn/de/d7/ded7e2951884b065c83841ec435039e8_2516x452.png =800x) &emsp;&emsp;這是因為 Android System WebView 的版本低于電腦 Chrome 瀏覽器的版本,前者是 117,而后者是 120。 :-: ![](https://img.kancloud.cn/4f/f2/4ff2774a559447667751387f041a0b37_2540x1400.png =800x) &emsp;&emsp;如果移動端的 Chrome 瀏覽器版本較低,那么在調試時,也會出現同樣的問題。 &emsp;&emsp;若未出現上述異常,可直接跳過下一節的版本升級。 **4)版本升級** &emsp;&emsp;兩者的解決辦法都是升級,一個是升級 Android System WebView,另一個是升級 Chrome 瀏覽器。 &emsp;&emsp;而 Android System WebView 需要到 Google Play Store 中更新。 &emsp;&emsp;由于圖中已經是最新版本,因此沒有顯示更新按鈕。 :-: ![](https://img.kancloud.cn/6e/d1/6ed102b073d9bc42deffffe63c484c59_474x514.png =300x) &emsp;&emsp;在更新成功后,以小米為例,在開發者選項中,選中 WebView 實現,就能看到當前版本。 :-: ![](https://img.kancloud.cn/0d/9c/0d9c16850117ad9209f81e63c0e0c322_492x251.png =300x) **5)調試窗口** &emsp;&emsp;重新訪問網頁,提示 Remote browser is newer than client browser. Try `inspect fallback` if inspection fails。 &emsp;&emsp;也就是說,客戶端的版本高于電腦瀏覽器,那么可以點擊 inspect fallbak 按鈕。 :-: ![](https://img.kancloud.cn/9a/7d/9a7d73fbf091ea782b39ccab2c023dff_1462x716.png =600x) &emsp;&emsp;在點擊后,就能正式出現完整的調試窗口,左邊是網頁,右邊是控制臺。 &emsp;&emsp;當有一端移動網頁時,另一端也能看到在移動,兩者實現了同步。 :-: ![](https://img.kancloud.cn/ab/75/ab75b77135a13dd2992623321700e526_2892x1722.png =800x) 參考資料: [iOS UIWebView與WKWebView 那些事](https://juejin.cn/post/7056680479436570631) [Web 瀏覽器相關的一些概念](https://keqingrong.cn/blog/2019-11-24-concepts-related-to-web-browsers/) [小米手機開發者選項在哪?](https://blog.csdn.net/shujuwa_data/article/details/124978906) [Chrome遠程調試](https://github.com/CN-Chrome-DevTools/CN-Chrome-DevTools/blob/master/md/Use-Tools/remote-debugging.md) [MIUI 更新 WebView 組件](https://www.manshaoco.com/765.html) ***** > 原文出處: [博客園-前端利器躬行記](https://www.cnblogs.com/strick/category/1472499.html) [知乎專欄-前端利器躬行記](https://zhuanlan.zhihu.com/pwtool) 已建立一個微信前端交流群,如要進群,請先加微信號freedom20180706或掃描下面的二維碼,請求中需注明“看云加群”,在通過請求后就會把你拉進來。還搜集整理了一套[面試資料](https://github.com/pwstrick/daily),歡迎瀏覽。 ![](https://box.kancloud.cn/2e1f8ecf9512ecdd2fcaae8250e7d48a_430x430.jpg =200x200) 推薦一款前端監控腳本:[shin-monitor](https://github.com/pwstrick/shin-monitor),不僅能監控前端的錯誤、通信、打印等行為,還能計算各類性能參數,包括 FMP、LCP、FP 等。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看