iOS開發(fā)之 OC 與 JS 互相調(diào)用(UIWebView)

有時(shí)候iOS開發(fā)過程中使用 UIWebView 經(jīng)常需要加載網(wǎng)頁,但是網(wǎng)頁中有很多明顯的標(biāo)記讓人一眼就能看出來是加載的網(wǎng)頁,而我們又不想被人卡出來。

如網(wǎng)頁中的這個(gè)導(dǎo)航

Snip20170704_1.png

通常我們不需要WebView中的 導(dǎo)航欄,也不需要里面的返回上一級的交互。。

對WebView常用的另外一種功能就是對某個(gè)點(diǎn)擊添加對用function實(shí)現(xiàn)JS調(diào)用OC的交互功能。

下面一一介紹:

1. UIWebView 調(diào)用JS代碼

OC調(diào)用JS通常是,在webView加載完成后調(diào)用,直接實(shí)現(xiàn)WebView代理方法

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    //    webView
    // 執(zhí)行JS代碼實(shí)現(xiàn)--這里移除頭部,只是進(jìn)來的時(shí)候移除一次,
    
    NSString *jsCode = @"var headerElement = document.getElementsByTagName('header')[0];"
    "headerElement.parentNode.removeChild(headerElement);";
    [webView stringByEvaluatingJavaScriptFromString:jsCode];

}

2. JS 調(diào)用 OC 方法

此種用法通常是WebView中某按鈕點(diǎn)擊要進(jìn)入下一級頁面或其他操作。此時(shí)需要實(shí)現(xiàn)兩個(gè)WebView的代理方法配合實(shí)現(xiàn)。

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    //    webView
    NSString *exeCode =
    //找到對應(yīng)的元素
    @"var figureElement = document.getElementsByTagName('div')[0];"
    //    "var imgElement = figureElement.children[0];"
    //添加相應(yīng)事件(這里是點(diǎn)擊事件)
    "figureElement.onclick = function(){window.location.;
    [webView stringByEvaluatingJavaScriptFromString:exeCode];
    
    self.request = webView.request;
    
}


- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    if ([request.URL.absoluteString isEqualToString:@"http://www.baidu.com/"]) {
        
        UIAlertView *a = [[UIAlertView alloc] initWithTitle:@"提示" message:@"政策原因,請移步網(wǎng)站投注" delegate:self cancelButtonTitle:@"好的" otherButtonTitles:nil, nil];
        [a show];
        
        return NO;
    }
    
    return YES;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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