當前位置:
首頁 > 知識 > iOS中UIWebView執行JS代碼(UIWebView)

iOS中UIWebView執行JS代碼(UIWebView)


iOS中UIWebView執行JS代碼(UIWebView)

有時候iOS開發過程中使用 UIWebView 經常需要載入網頁,但是網頁中有很多明顯的標記讓人一眼就能看出來是載入的網頁,而我們又不想被人卡出來。

如網頁中的這個導航

iOS中UIWebView執行JS代碼(UIWebView)

通常我們不需要WebView中的 導航欄,也不需要裡面的返回上一級的交互。。

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

下面一一介紹:

1. UIWebView 調用JS代碼

OC調用JS通常是,在webView載入完成後調用,直接實現WebView代理方法

- (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的代理方法配合實現。

- (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;
}

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 達人科技 的精彩文章:

Spark如何在一個SparkContext中提交多個任務
Unity應用架構設計(13)——日誌組件的實施
獲取自定義的當前時間格式
Docker for windows on VMware
開源 .net license tool, EasyLicense !

TAG:達人科技 |

您可能感興趣

英國FINTECH Circle首席執行官Susanne Chishti力薦!
HYPETALKS|Jeff Staple、Grailed 執行總裁、StockX 創始人、OG MA 談轉售業的意義
Victoria Beckham任命DVF前首席執行官為新CEO
Mozilla發布WebAssembly執行介面WASI
HIFI專訪:Playback Designs創辦人兼執行長Kndreas Koch
Adrian小哥教程:如何使用Tesseract和OpenCV執行OCR和文本識別
SUSE 任命 Melissa Di Donato 為公司首席執行官
BackOffice Associates晉陞Kevin Campbell為首席執行官
探討轉售業的意義,對話 Grailed 執行總裁、StockX 創始人、OG MA | HYPETALKS
NVIDIA靜默修復Selfblow漏洞:可在Tegra晶元之上執行任意惡意代碼
Imagination任命Nigel Leeder為執行副總裁,負責PowerVR業務部門
Intel CPU 再現新漏洞:預測執行攻擊 L1 Terminal Fault
js中setTimeOut()和setInterval()的使用——程序執行時間控制
「矽谷教父」John L.Hennessy出任 Alphabet 首席執行官
Solera Holdings宣布Jeffrey R.Tarr為新任首席執行官
Immersion與TDK Electronics達成為PowerHap壓電式執行器提供觸覺設計和營銷服務的協議
金色財經現場報道OSA DC ECR執行董事Maximiliam Musselius:人工智慧與區塊鏈賦能智慧消費者
TensorFlow 2.0將把Eager Execution變為默認執行模式
前Docker高管Ben Golub加盟區塊鏈創企Storj Labs,任首席執行官
Coinbase首席執行官:BTC和ETH可成為遊戲和VR的催化劑