午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

Android WebView攔截iframe標(biāo)簽內(nèi)部跳轉(zhuǎn)教程

瀏覽:204日期:2022-09-25 14:11:43

最近項目里有個廣告位需要動態(tài)配置,后臺給了一段 html 嵌套iframe標(biāo)簽的代碼,需要Android攔截iframe內(nèi)部的跳轉(zhuǎn),自己做處理。

比如,下面是一段html代碼,嵌套這iframe標(biāo)簽,src就是跳轉(zhuǎn)地址,我現(xiàn)在就要當(dāng)你點擊該網(wǎng)址的時候做攔截,自己做處理而不是跳轉(zhuǎn)。

<html> <iframe src='https://www.jb51.net/' frameborder=’0’ scrolling=’no’ width=’100%’ height=’300’></iframe></html>

oh,我還是第一次知道iframe標(biāo)簽,不過想著應(yīng)該和普通攔截h5差不多,興致勃勃的就開始擼代碼了,但是無論怎么配置WebView,還是重寫 shouldOverrideUrlLoading ,就是攔截不了iframe里的網(wǎng)址。。。后來研(bai)究(du)了很久,終于攔截到了。

實現(xiàn)方法:

首先,你的WebView要 setWebViewClient ,重寫

public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {} 方法,然后setWebChromeClient,重寫onCreateWindow方法,在里面創(chuàng)建新的WevView,加入到webView里,給新的webView setWebViewClient,再重寫shouldVeerrideUrlLoading方法,在這里攔截。 webView.setWebChromeClient(new WebChromeClient(){ @Override public boolean onCreateWindow(WebView webView, boolean isDialog, boolean isUserGesture, Message resultMsg) { WebView newWebView = new WebView(getActivity()); webView.addView(newWebView); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(newWebView); resultMsg.sendToTarget(); newWebView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView webView, String url) { //TODO 在這里實現(xiàn)你的攔截方法 if (url.contains('https://www.jb51.net')){ toast('攔截到了' + url); Intent intent = new Intent(getActivity(), CommonWebViewActivity.class); intent.putExtra('url',url); startActivity(intent); }else { webView.loadUrl(url); } return true; } }); return true; } });

完整的代碼如下:

private void initWebView(WebView webView) { //啟用支持javascript WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); settings.setJavaScriptCanOpenWindowsAutomatically(true); settings.setSupportZoom(false); //支持縮放 settings.setBuiltInZoomControls(false); //支持手勢縮放 settings.setDisplayZoomControls(false); //是否顯示縮放按鈕 settings.setDefaultTextEncodingName('utf-8'); //設(shè)置文本編碼 settings.setUseWideViewPort(false); //將圖片調(diào)整到適合WebView的大小 settings.setLoadWithOverviewMode(true); //自適應(yīng)屏幕 settings.setDomStorageEnabled(true); settings.setSaveFormData(true); settings.setSupportMultipleWindows(true); settings.setAppCacheEnabled(true); settings.setPluginState(WebSettings.PluginState.ON);//支持插件 settings.setCacheMode(WebSettings.LOAD_NO_CACHE); //不適用緩存 settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);//支持內(nèi)容重新布局 webView.setOverScrollMode(View.OVER_SCROLL_NEVER); // 取消WebView中滾動或拖動到頂部、底部時的陰影 webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); // 取消滾動條白邊效果 // >= 19(SDK4.4)啟動硬件加速,否則啟動軟件加速 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { webView.setLayerType(View.LAYER_TYPE_HARDWARE, null); settings.setLoadsImagesAutomatically(true); //支持自動加載圖片 } else { webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); settings.setLoadsImagesAutomatically(false); } webView.setWebViewClient(new WebViewClient() { @Override public void onLoadResource(WebView view, String url) { super.onLoadResource(view, url); Log.w('webView==onLoadResource===url=' + url); } @Override public void onReceivedSslError(WebView webView, SslErrorHandler sslErrorHandler, SslError sslError) { sslErrorHandler.proceed(); // 接受所有網(wǎng)站的證書 } @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {if (request.getUrl().toString().contains('http://www.baidu.com')){ toast('攔截到了baidu'); }else { webView.loadUrl(request.getUrl().toString()); } return true; } }); webView.setWebChromeClient(new WebChromeClient(){ @Override public boolean onCreateWindow(WebView webView, boolean isDialog, boolean isUserGesture, Message resultMsg) { WebView newWebView = new WebView(getActivity()); webView.addView(newWebView); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(newWebView); resultMsg.sendToTarget(); newWebView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView webView, String url) { if (url.contains('//www.jb51.net')){ toast('攔截到了' + url); Intent intent = new Intent(getActivity(), CommonWebViewActivity.class); intent.putExtra('url',url); startActivity(intent); }else { webView.loadUrl(url); } return true; } }); return true; } }); }

以上這篇Android WebView攔截iframe標(biāo)簽內(nèi)部跳轉(zhuǎn)教程就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 国产女av | 三级黄色片 | 亚洲欧美日韩成人在线 | 中文字幕亚洲天堂 | 超碰2021 | 午夜在线视频观看 | 成人二区三区 | 中文字幕一区二区三区视频 | 久久久一区二区三区四区 | 五月天色网站 | 成人av免费网站 | 激情综合一区二区三区 | 国产精品欧美激情 | 亚洲成人少妇 | 4虎最新网址 | 日韩精品视频在线免费观看 | 久久91视频 | 在线精品亚洲欧美日韩国产 | 日韩在线视频观看免费 | 亚洲专区免费 | 亚洲精品一区二区在线 | 福利午夜视频 | jizz黄色片 | 青青操在线视频 | 成人免费毛片果冻 | 欧美视频a | 午夜影院 | 国产精选在线 | 国产一级精品毛片 | 亚洲欧美自拍偷拍 | 五月激情综合 | 日本视频网| 亚洲一区二区视频在线观看 | 国产精品第一页在线观看 | 九九三级 | 男人av网 | 国产三级午夜理伦三级 | 黄色网页在线观看 | 欧美在线日韩在线 | 激情婷婷色 | 国产黄色在线看 |