1. 程式人生 > >WKWebView與js互動

WKWebView與js互動

    接手新的專案,直接就放棄了iOS8以下的使用者.想想也是醉了.那麼小白帶你怎麼玩轉WKWebView.

首先點進去看API,好到此結束了.那我下面就不用寫了.其實網上有很多相關的WEWebView的部落格簡單的怎麼用,我綜合一下了大家可以參考歲寒大神的個人部落格--WKWebView混合開發框架

爬坑時刻 1 (2016 - 3 - 16)

1.無法設定快取

在UIWebView,使用NSURLCache快取,通過setSharedURLCache可以設定成我們自己的快取,但WKWebView不支援NSURLCache (用了半個小時在設定怎麼清除快取...結果是說多都是淚)

2.webview沒啟用無法與JS互動

當你用懶載入把幾個控制器的html頁面都儲存下來了.突然你想呼叫某個頁面的js方法,而當前頁面不是js所在頁面..那麼問題來了.什麼資料更新不了.或者呼叫失敗.(整整停了三天處理這個問題,js大神都被我坑倒了.只能呵呵.....)解決方法:告訴要呼叫的頁面是否要呼叫某個js方法,然後在viewWillAppear或者其他要顯示當前頁面的方法中呼叫該頁面的js

爬坑時刻 2(2016 - 4 - 25)

1.js無法重新整理

先解析一下:js 無法重新整理是什麼回事, 就是在之前你訪問過該頁面了, 然後你把js 或者 css 更改了提交到伺服器, 你從新重新整理網頁, 沒變化, 殺死程序,在點選進app 重新整理網頁 沒變化.
那麼處理方法:在URL 後面加個隨機數

let ind = url.characters.indexOf("?"//判斷url 是否有拼其他欄位

var str: String!

if ind == nil

        {

            str = "?iosv=\(RandomTime.time())"  //隨機數

        }

else

        {

            str = "&iosv=\(RandomTime.time())" //隨機數

        }

        str = url + str


2.WKWebView說沒快取實際直接儲存了資料

經過上面的方法處理了js 不重新整理的問題, 那麼問題又來了,經過十幾天的刷刷刷刷....
瞬間爆炸有木有!...看到這種情況你敢不解除安裝嗎!  檢視webKit 檔案 發現 每開啟一個網頁 WKwebView 都會根據當前的url MD5 之後下載兩個 檔案 (一個後面加多一個body的) 後面加多一個隨機數每次開啟以前開啟過的頁面 都下載一個 ,記憶體當然爆炸啊! 解決方法: 隨機數 過一定時間再改變, 儲存到一定程度的時候 就刪 怎麼計算儲存 可以參考我的部落格 iOS 計算資料夾中包含所有檔案的大小

3.攔截Url的方式響應

當網頁中帶Target 屬性_blank(開啟新視窗顯示頁面) 為跳轉的時候呼叫這個方法

func webView(webView: WKWebView, createWebViewWithConfiguration configuration: WKWebViewConfiguration, forNavigationAction navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? { }

當網頁中帶沒帶跳轉屬性為跳轉的時候呼叫這個方法

func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction:WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {

        decisionHandler(.Allow)

    }



相關推薦

WKWebViewJS互動詳情.

上一篇博文《WebKit(展示Web介面)》講解了顯示Web頁面,這一篇博文將講解使用WKScriptMessageHandler完成JS互動。在WKWebView中OC和JS互動也非常簡單,WebKit庫中有個代理WKScriptMessageHandler就是專門來做互動的。1 WKScriptMessa

WKWebViewjs互動

    接手新的專案,直接就放棄了iOS8以下的使用者.想想也是醉了.那麼小白帶你怎麼玩轉WKWebView. 首先點進去看API,好到此結束了.那我下面就不用寫了.其實網上有很多相關的WEWebVi

WKWebView JS 互動簡單使用

通過調研,我決定使用WKWebView替換原來的UIWebView。 遇到的第一個問題就是WKWebView無法在我喜愛的xib上設定,通過翻牆搜尋資料,原來WKWebView沒有實現initWithCoder方法,自然也就找到了解決辦法: 自定義一個M

WKWebViewJS互動之實戰技巧介紹

前言 效果圖 通過本篇文章,至少可以學習到: OC如何給JS注入物件及JS如何給IOS傳送資料 JS呼叫alert、confirm、prompt時,不採用JS原生提示,而是使用iOS原生來實現 如何監聽web內容載入進度、是否載入完成 如何

Swift WKWebView(二):iOSjs互動

在上一篇中我們介紹了Swift下WKWebView的基本使用方法,下面總結一下iOS與js互動的實現,最終的頁面效果如下圖所示: 其中,js有關程式碼如下: function navButtonAction(name,age){

Swift 使用WKWebView 實現Swift JS 互動

功能一:刪除京東手機版https://m.jd.com/右上角的登陸按鈕 程式碼如下 import UIKit import WebKit class ViewController2: UIViewController,WKNavigationDelegate { @IBOutlet w

iOS 開發 Object-C和JavaScript互動詳解之OCJS互動WKWebView中使用

1.OC與JS互動在UIWebView中使用 2. WKWebView的使用詳解 3.OC與JS互動在WKWebView中使用 // // ViewController.m // oc與js互動WKWebView // // Cr

iOSjs互動(WebView+WKWebView)

需求:1點選js登入按鈕將使用者賬號和密碼傳給移動端             2將客戶端的token傳給html端 據我瞭解有以下幾種方法 1:webview的javascriptCore 2:webkit 3:url攔截 4:第三方庫 我用的是1和2

WKWebViewJS互動載入CSS樣式(Hybrid混合開發)

首先,我們需要準備一篇帶有互動指令碼的HTML <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

duilib CWebBrowser控制元件 cxxjs互動

轉自:http://blog.csdn.net/sunflover454/article/details/60873557(侵刪) C++和js相互呼叫是個有意思的事情。 一、js中呼叫C++函式。函式原型 [html]  view plain

iOSJS互動的4種方法

iOS與JS互動的方法: 1.攔截url(適用於UIWebView和WKWebView) 2.JavaScriptCore(只適用於UIWebView,iOS7+) 3.WKScriptMessageHandler(只適用於WKWebView,iOS8+) 4.WebViewJ

OCJS互動 初體會

第一篇部落格,有點小緊張、小期待,會不會有人看?有也好,沒有也罷,權當自己圖個樂兒,記錄近來學到的知識。閒話少說,進入正題! OC與JS互動的方式:1、使用UIWebView通過攔截Request完成JS調取OC,通過stringByEvaluatingJavaScriptFromString注入JS函式或

Android開發之Webview中原生JS互動

文章目錄 概述 使用場景 互動方式 Java呼叫JS程式碼 JS呼叫Java程式碼 總結 概述 由於手機硬體資源的快速提升,使得采用混合開發的可能性逐漸成為現實並且流行起來。Android開發中

WKWebViewH5互動的兩種方式

互動方式一:原生互動(以WKWebView為栗子) 1.原生呼叫H5方法 [wkWebView evaluateJavaScript:@"js方法名" completionHandler:^(id _Nullable response, NSError * _Nullable err

使用WebViewJavascriptBridge實現OCJS互動

  陳向陽哈  關注 2015.09.29 15:36* 最後編輯於 2015.10.13 09:44   字數 146

目前iOSJS互動的方法選擇比對

只是針對目前存在的互動方式做個比對。不會涉及任何實現。如需知道具體的使用。可自行baidu或者Google。 攔截協議 攔截協議是最簡單的互動方式,在Android端和iOS端直接攔截,可以統一web前端的程式碼。web前端通過在連結中帶上引數。比如: 88gongxiang:

OCJS互動之JavaScriptCore

JavaScriptCore初探 在iOS7之前,原生應用和Web應用之間很難通訊。如果你想在iOS裝置上渲染HTML或者執行JavaScript,你不得不使用UIWebView。iOS7引入了JavaScriptCore,功能更強大,使用更簡單。 ###JavaScriptCore

Android之webViewjs互動

一、java呼叫js操作: 1.佈局檔案: <WebView android:id="@+id/web" android:layout_width="match_parent" android:layout_height="mat

安卓混淆之後,androidjs互動異常原因

解決方案:需要js互動程式碼不被混淆掉,加入以下程式碼即可 -keepclassmembers class com.taohaohuo365.taohaohuo.activity.H5Activity$AndroidAndJSInterface { public *; } -keepcla

SwiftJS互動

swift與js互動: 先看model: @objc protocol VideoDelegate : JSExport { func callSystemCamera(); func exitsCollection(cid: String); } @obj