iOS中UIWebView執行JS代碼(UIWebView)
iOS中UIWebView執行JS代碼(UIWebView)
有時候iOS開發過程中使用 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的催化劑