關(guān)于js和swift交互的理解(一)

這幾天一直在研究js和swift的交互,發(fā)現(xiàn)里面還是有一些東西可以記載下來,或者幫助后來人,閑話少說,下面開始:

總起來說就2種不同的交互方式:

1.swift調(diào)用js

2.js調(diào)用swift代碼

這篇文章主要說swift調(diào)用js

1.利用js修改html頁面,這也可以算作一種swift調(diào)用js

let header = "document.getElementById('header').remove()"

webView.stringByEvaluatingJavaScript(from: header)

還可以利用下面的代碼來改變頁面的標(biāo)題

self.title = webView.stringByEvaluatingJavaScript(from: "document.title")

2.還有一種調(diào)用js里的方法

JavaScriptCore是蘋果在iOS7時新推出用以實(shí)現(xiàn)JS和iOS代碼交互的框架

JSContext是JS的執(zhí)行環(huán)境。

JSValue是Swift或者OC與JS交互的中間媒體,可以轉(zhuǎn)化為Swift對? ? 象或者OC對象,也可以獲取JS對象或方法。

JSExport是Swift或者OC與JS交互的協(xié)議,構(gòu)造一個類,遵循JSExport協(xié)議,實(shí)現(xiàn)協(xié)議的方法和初始化協(xié)議的屬性,然后把Swift或OC對象與JS對象關(guān)聯(lián),我們就可以在JS環(huán)境下使用關(guān)聯(lián)的對象調(diào)用之前實(shí)現(xiàn)的協(xié)議的方法或取得屬性值或修改屬性值。

JSManagedValue:JSValue的內(nèi)存管理器。

JSVirtualMachine:JSVirtualMachine為JavaScript的運(yùn)行提供了底層資源.

//獲取js的運(yùn)行環(huán)境JSContext

let context = webView.value(forKeyPath: "documentView.webView.mainFrame.javaScriptContext") as? JSContext

//獲取js里的goGroup方法JSValue(注意:這里獲得方法只能是js里公有的方法,私有方法獲取不到,因?yàn)椴欢甹s搞了半天就是不明白為何調(diào)用不成功,后來換了一個方法就可以了,才明白原來只有共有的方法才能調(diào)用)

let jsFunc = context?.objectForKeyedSubscript("goGroup")

//執(zhí)行js里的方法,"10432"是里面的傳遞的參數(shù)

jsFunc?.call(withArguments: ["10432"])

接下來我會在寫一篇文章交互二,寫的是js調(diào)用swift,文章地址:關(guān)于js和swift交互的理解(二)???

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • JavaScriptCore框架主要是用來實(shí)現(xiàn)iOS與H5的交互。由于現(xiàn)在混合編程越來越多,H5的相對講多,所以研...
    水靈芳蕥閱讀 1,491評論 1 8
  • 項目中涉及OC與網(wǎng)頁的交互,查找資料時看到了JavaScriptCore.framework,就對照文章ios7 ...
    YaoYaoX閱讀 2,475評論 7 11
  • OC與JS交互之JavaScriptCore 本文摘抄自:https://hjgitbook.gitbooks.i...
    大沖哥閱讀 1,104評論 0 1
  • 本文由我們團(tuán)隊的 糾結(jié)倫 童鞋撰寫。 寫在前面 本篇文章是對我一次組內(nèi)分享的整理,大部分圖片都是直接從keynot...
    知識小集閱讀 15,382評論 11 172
  • 隨著H5技術(shù)的興起,在iOS開發(fā)過程中,難免會遇到原生應(yīng)用需要和H5頁面交互的問題。其中會涉及方法調(diào)用及參數(shù)傳值等...
    Chris_js閱讀 3,234評論 1 8

友情鏈接更多精彩內(nèi)容