iOSUIWebview 與js交互

交互辦法:

方案一.使用系統(tǒng)的最原生的交互:

(1)js 調(diào)用原生的方法:

思路:網(wǎng)頁的每次請求都是一次request ,在webView中有一個代理方法- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType嚷狞;可以攔截請求的東西芭届。

本人對js了解不太深所以js代碼就不貼了。算了還是找到了貼一下感耙,

#pragma mark ****這部分代碼是html中的 js代碼

var btn = document.getElementById('upload'); // 獲取叫upload的按鈕

var nativeBridage = { // 這個應(yīng)該是和webView的橋梁吧褂乍,不太懂的樣子。

invoke: function (commandName) {

console.log(commandName);

window.location = 'js-call:' + commandName ;// 這js-call 是我們能夠截獲到的事件嗯即硼,就是他了逃片。

}

};

btn.addEventListener("click", function() {// 這個是為按鈕增加綁定點擊事件

console.log("Cliked");// 打印。只酥。褥实。

if (window.android) { // 這個是安卓的方法,安卓的方法好像能直接調(diào)用裂允,好厲害的樣子

console.log("Has Android");

android.test();

} else {// 這個代碼就是我們iOS的了损离,不是安卓就是iOS,你把winPhone放哪了绝编?別問我也不知道僻澎。

nativeBridage.invoke('test');

}

});

#pragma mark ****這部分代碼是我們OC中的代碼了

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

//獲取他的請求路徑

NSString *requestURLString = [[request URL] absoluteString];

// ?判斷是否有這個js-call

if ([requestURLString hasPrefix:@"js-call:"]) {


//? 接下來是判斷command的名字和JSON參數(shù)字符串:


#warning js-call 后面是個數(shù)組,

NSArray *components = [requestURLString componentsSeparatedByString:@":"];

//? 命令名字

NSString *commandName = (NSString*)[components objectAtIndex:0];

NSLog(@"components %@ %@ ",components,commandName); // 打印看看

if([commandName isEqualToString:@"test"]){ // 判斷名字是什么執(zhí)行相應(yīng)的操作

NSLog(@"做任何你想做的事情(使用self的時候用weakSelf比較好十饥,據(jù)說是因為js會強(qiáng)引用oc的東西窟勃。)");

return NO;// 最好返回NO,不然會出現(xiàn)一些奇怪的事情逗堵。

}

}

return YES;

}

(2)oc調(diào)用js?

這個就沒什么好寫的了秉氧,

做網(wǎng)頁的會給你一個js函數(shù)名func,直接使用下面的方法就可以了

[self.webView stringByEvaluatingJavaScriptFromString:func];

例如本人遇到的是傳參的函數(shù)

她給我的函數(shù)名是:window.myApp.services.cameraHandler(error,string);// 沒錯蜒秤,他給我的就是這個汁咏,通常不是什么test()亚斋;之類的么。

然后就拼接一下就行了攘滩,對了這個是要傳參數(shù)的

第一個參數(shù)顧名思義是錯誤帅刊,開玩笑,我怎么會有錯誤轰驳,不傳厚掷,(注意可以不傳,他們那邊就是null级解,你要是穿個null 或者nil 冒黑,他們那邊不是null,我也不懂是不是這樣勤哗,但是我做的時候就是這樣奥盏!)

第二個參數(shù)是要傳一些值:就傳一個字符串吧@“silly boy芒划!”

NSString *pathStr =@“silly boy冬竟!”;

//將參數(shù)拼接到j(luò)s函數(shù)中

NSString *path = [NSString stringWithFormat:@"window.myApp.services.cameraHandler('','%@');",pathStr];

// 執(zhí)行js代碼

[self.webView stringByEvaluatingJavaScriptFromString:path];

End

二。使用第三方WebViewJavascriptBridge

(https://github.com/marcuswestin/WebViewJavascriptBridge)

第三方的還是自己研究吧民逼,我就不多寫了泵殴。(好吧我承認(rèn)我是沒用過)

*在iOS / OSX的橋梁,為在UIWebViews / WebViews的OBJ-C與JavaScript之間發(fā)送消息**很多人在用(哇咔咔)拼苍,本人項目小用原生的就行了笑诅。

三。iOS7里的JavaScriptCore framework

使用這個疮鲫,還是自行百度吧吆你,網(wǎng)上一大堆代碼】》福可以參考這個:http://justsee.iteye.com/blog/2036713

四妇多。iOS8WKWebView

給個鏈接自己看吧,有好的告訴我燕侠,我也看看者祖。

https://lvwenhan.com/ios/460.html


本人是菜鳥,如有錯誤請指正贬循,歡迎交流咸包。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市杖虾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌媒熊,老刑警劉巖奇适,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坟比,死亡現(xiàn)場離奇詭異,居然都是意外死亡嚷往,警方通過查閱死者的電腦和手機(jī)攘烛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門鼠锈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事赦役。” “怎么了滓侍?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵顶伞,是天一觀的道長。 經(jīng)常有香客問我势誊,道長呜达,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任粟耻,我火速辦了婚禮查近,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挤忙。我一直安慰自己霜威,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布册烈。 她就那樣靜靜地躺著戈泼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茄厘。 梳的紋絲不亂的頭發(fā)上矮冬,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機(jī)與錄音次哈,去河邊找鬼胎署。 笑死,一個胖子當(dāng)著我的面吹牛窑滞,可吹牛的內(nèi)容都是我干的琼牧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼哀卫,長吁一口氣:“原來是場噩夢啊……” “哼巨坊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起此改,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤趾撵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體占调,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡暂题,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了究珊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薪者。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖剿涮,靈堂內(nèi)的尸體忽然破棺而出言津,到底是詐尸還是另有隱情,我是刑警寧澤取试,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布悬槽,位于F島的核電站,受9級特大地震影響想括,放射性物質(zhì)發(fā)生泄漏陷谱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一瑟蜈、第九天 我趴在偏房一處隱蔽的房頂上張望烟逊。 院中可真熱鬧,春花似錦铺根、人聲如沸宪躯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽访雪。三九已至,卻和暖如春掂林,著一層夾襖步出監(jiān)牢的瞬間臣缀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工泻帮, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留精置,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓锣杂,卻偏偏與公主長得像脂倦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子元莫,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

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

  • 前言 上一篇專門講解了WKWebView相關(guān)的所有類赖阻、代理的所有API。前篇文章地址:http://blog.cs...
    iwolfox閱讀 1,105評論 1 1
  • 一布隔、簡介 近兩年隨著HTML5的迅速發(fā)展與日趨成熟离陶,越來越多的移動開發(fā)者選擇使用HTML5來進(jìn)行混合開發(fā)稼虎,不僅節(jié)約...
    RainyGY閱讀 1,870評論 1 12
  • 前言 在iOS開發(fā)過程中衅檀,一般會有遇到需要和UIWebView交互的需求,即native端和網(wǎng)頁端的數(shù)據(jù)交互霎俩,因為...
    wuwy閱讀 911評論 0 2
  • 隨著H5技術(shù)的興起哀军,在iOS開發(fā)過程中,難免會遇到原生應(yīng)用需要和H5頁面交互的問題打却。其中會涉及方法調(diào)用及參數(shù)傳值等...
    Chris_js閱讀 3,068評論 1 8
  • 通過本篇文章杉适,至少可以學(xué)習(xí)到: OC如何給JS注入對象及JS如何給IOS發(fā)送數(shù)據(jù) JS調(diào)用alert、confir...
    一個叫小強(qiáng)的程序猿閱讀 1,153評論 2 0