ios跟網(wǎng)頁的交互

最近項目里面用了一些h5的頁面驰怎,然后避免不了,要跟網(wǎng)頁交互二打。我用了UIwebView,也用了WKWebView∠丶桑現(xiàn)在分別說下我自己的兩種用法。

1继效、UIWebView:之前跟網(wǎng)頁交互症杏,基本就是攔截URL,跟前端的同事約好瑞信,攔截具有某些字符串的URL厉颤,可將攜帶的參數(shù)拼接在URL里面。主要就是實現(xiàn) webview的這個代理方法凡简。

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {

        guard let url = request.url, let q = URLComponents(url: url, resolvingAgainstBaseURL: true)?.queryItems else { return true }
        if url.absoluteString.contain("homeworkStu/saveStuHomeworkAnswer") {
            print("點擊返回的鏈接是 == ",url)
            var p = [String : Any]()
            q.forEach({
                if let v = $0.value {
                    p[$0.name] = v
                }
            })
            self.saveAnwser(params: p)
            return false
        }
        return true
    }

我這里面實現(xiàn)的是逼友,點擊網(wǎng)頁上面的某個按鈕,然后我調(diào)用 saveAnwser()這個方法秤涩。我跟前端約定的就是帜乞,URL里面包含"homeworkStu/saveStuHomeworkAnswer"這個字符,然后將傳給我的參數(shù)都拼接到URL里面筐眷,我自己再來解析出來黎烈。這種可能傳參內(nèi)容少,還可以匀谣。但是如果前端要傳一個解析好的網(wǎng)絡(luò)請求結(jié)果給我們照棋,估計他們不愿意這種吧。

2振定、WKWebView:這種一樣必怜,也是要跟前端同事約定好,遵循 WKScriptMessageHandler 代理后频。

let config = WKWebViewConfiguration.init()
        config.userContentController.add(self, name: "collectGzhu")
        webView = WKWebView(frame: CGRect(x: 0, y: 0, width: UIScreen.w, height: app.isIphoneX ? (UIScreen.h - 88) : (UIScreen.h - 64)), configuration: config)
        webView.navigationDelegate = self
        webView.uiDelegate = self
        webView.addObserver(self, forKeyPath: "estimatedProgress", options: NSKeyValueObservingOptions.new, context: nil)
        self.view.addSubview(webView)

這里我跟前端同事約定的方法名就是 collectGzhu梳庆。然后就是實現(xiàn)這個代理方法。

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
        if message.name == "collectGzhu" {

            print(message.body)
        }
    }

這種方法好像更簡便一些卑惜,前端直接把要穿給我們的內(nèi)容膏执,放在body里面。
//js端代碼實現(xiàn)實例(此處為js端實現(xiàn)代碼給大家粘出來示范的!!!):

//window.webkit.messageHandlers.collectGzhu.postMessage({body: 'name=1212'});

還有攔截網(wǎng)頁alert露久。就是實現(xiàn)這些代碼方法更米。

func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Void) {
        
        self.alert(title: message, msg: message)
        completionHandler()
    }
    
    func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) {
        
        self.alert(title: message, msg: message)
        completionHandler(true)
    }
    
    func webView(_ webView: WKWebView, runJavaScriptTextInputPanelWithPrompt prompt: String, defaultText: String?, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (String?) -> Void) {
        
        self.alert(title: prompt, msg: prompt)
        completionHandler(nil)
    }
這里面的 completionHandler 回調(diào)必須寫,我之前沒寫 completionHandler毫痕,一直崩潰征峦,后來在網(wǎng)上找到的解決辦法迟几,就是要把completionHandler寫上去。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末栏笆,一起剝皮案震驚了整個濱河市类腮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蛉加,老刑警劉巖蚜枢,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異针饥,居然都是意外死亡厂抽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門丁眼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來筷凤,“玉大人暑始,你說我怎么就攤上這事绘闷。” “怎么了浙巫?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵莽鸭,是天一觀的道長。 經(jīng)常有香客問我吃靠,道長硫眨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任巢块,我火速辦了婚禮礁阁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘族奢。我一直安慰自己姥闭,他們只是感情好,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布越走。 她就那樣靜靜地躺著棚品,像睡著了一般。 火紅的嫁衣襯著肌膚如雪廊敌。 梳的紋絲不亂的頭發(fā)上铜跑,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音骡澈,去河邊找鬼锅纺。 笑死,一個胖子當著我的面吹牛肋殴,可吹牛的內(nèi)容都是我干的囤锉。 我是一名探鬼主播坦弟,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼官地!你這毒婦竟也來了酿傍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤区丑,失蹤者是張志新(化名)和其女友劉穎拧粪,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沧侥,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡可霎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了宴杀。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片癣朗。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖旺罢,靈堂內(nèi)的尸體忽然破棺而出旷余,到底是詐尸還是另有隱情,我是刑警寧澤扁达,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布正卧,位于F島的核電站,受9級特大地震影響跪解,放射性物質(zhì)發(fā)生泄漏炉旷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一叉讥、第九天 我趴在偏房一處隱蔽的房頂上張望窘行。 院中可真熱鬧,春花似錦图仓、人聲如沸罐盔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惶看。三九已至,卻和暖如春六孵,著一層夾襖步出監(jiān)牢的瞬間碳竟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工狸臣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留莹桅,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像诈泼,于是被迫代替她去往敵國和親懂拾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時...
    歐辰_OSR閱讀 29,343評論 8 265
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,093評論 1 32
  • 1铐达、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,969評論 3 119
  • 本文是一篇譯文岖赋,翻譯的是James Bach發(fā)表的一篇名為“Exploratory Testing 3.0”的文章...
    李明溪閱讀 507評論 0 2
  • 大愛的老師,智慧美麗的班主任瓮孙,親愛的眾學兄們: 大家好唐断!我是蔡劍鋒來自杭州佳能廣告,今天是2018.9.5...
    佳能廣告閱讀 139評論 0 0