iOS中UIWebView執行JS代碼(UIWebView)

iOS中UIWebView執行JS代碼(UIWebView)

有時候iOS開發過程當中使用 UIWebView 常常須要加載網頁,可是網頁中有不少明顯的標記讓人一眼就能看出來是加載的網頁,而咱們又不想被人卡出來。css

如網頁中的這個導航html

Snip20170704_1.png

一般咱們不須要WebView中的 導航欄,也不須要裏面的返回上一級的交互。。nginx

對WebView經常使用的另一種功能就是對某個點擊添加對用function實現JS調用OC的交互功能。web

下面一一介紹:canvas

1. UIWebView 調用JS代碼

OC調用JS一般是,在webView加載完成後調用,直接實現WebView代理方法ruby

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

}

2. JS 調用 OC 方法

此種用法一般是WebView中某按鈕點擊要進入下一級頁面或其餘操做。此時須要實現兩個WebView的代理方法配合實現。markdown

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    //    webView
    NSString *exeCode =
    //找到對應的元素
    @"var figureElement = document.getElementsByTagName('div')[0];"
    //    "var imgElement = figureElement.children[0];"
    //添加相應事件(這裏是點擊事件)
    "figureElement.onclick = function(){window.location.href = 'http://www.baidu.com'};";
    [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:@"政策緣由,請移步網站投注" delegate:self cancelButtonTitle:@"好的" otherButtonTitles:nil, nil];
        [a show];
        
        return NO;
    }
    
    return YES;
}
相關文章
相關標籤/搜索