电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Android WebView攔截iframe標簽內部跳轉教程

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

最近項目里有個廣告位需要動態配置,后臺給了一段 html 嵌套iframe標簽的代碼,需要Android攔截iframe內部的跳轉,自己做處理。

比如,下面是一段html代碼,嵌套這iframe標簽,src就是跳轉地址,我現在就要當你點擊該網址的時候做攔截,自己做處理而不是跳轉。

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

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

實現方法:

首先,你的WebView要 setWebViewClient ,重寫

public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {} 方法,然后setWebChromeClient,重寫onCreateWindow方法,在里面創建新的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 在這里實現你的攔截方法 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'); //設置文本編碼 settings.setUseWideViewPort(false); //將圖片調整到適合WebView的大小 settings.setLoadWithOverviewMode(true); //自適應屏幕 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);//支持內容重新布局 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(); // 接受所有網站的證書 } @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標簽內部跳轉教程就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
主站蜘蛛池模板: vr安全体验馆|交通安全|工地安全|禁毒|消防|安全教育体验馆|安全体验教室-贝森德(深圳)科技 | 气力输送_输送机械_自动化配料系统_负压吸送_制造主力军江苏高达智能装备有限公司! | 品牌设计_VI设计_电影海报设计_包装设计_LOGO设计-Bacross新越品牌顾问 | 玖容气动液压设备有限公司-气液增压缸_压力机_增压机_铆接机_增压器 | 环保袋,无纺布袋,无纺布打孔袋,保温袋,环保袋定制,环保袋厂家,环雅包装-十七年环保袋定制厂家 | 丹佛斯变频器-丹佛斯压力开关-变送器-广州市风华机电设备有限公司 | 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | 单电机制砂机,BHS制砂机,制沙机设备,制砂机价格-正升制砂机厂家 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 好看的韩国漫画_韩漫在线免费阅读-汗汗漫画 | 无负压供水设备,消防稳压供水设备-淄博创辉供水设备有限公司 | 土壤水分自动监测站-SM150便携式土壤水分仪-铭奥仪器 | 玻璃钢罐_玻璃钢储罐_盐酸罐厂家-河北华盛节能设备有限公司 | 电动葫芦|手拉葫芦|环链电动葫芦|微型电动葫芦-北京市凌鹰起重机械有限公司 | 线材成型机,线材折弯机,线材成型机厂家,贝朗自动化设备有限公司1 | 酒店厨房设计_中央厨房设计_北京商用厨房设计公司-奇能商厨 | 常州减速机_减速机厂家_常州市减速机厂有限公司 | 活动策划,舞台搭建,活动策划公司-首选美湖上海活动策划公司 | 电位器_轻触开关_USB连接器_广东精密龙电子科技有限公司 | 贵州成人高考网_贵州成考网 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 双菱电缆-广州电缆厂_广州电缆厂有限公司 | 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 交通气象站_能见度检测仪_路面状况监测站- 天合环境科技 | 电磁铁_推拉电磁铁_机械手电磁吸盘电磁铁厂家-广州思德隆电子公司 | MVE振动电机_MVE震动电机_MVE卧式振打电机-河南新乡德诚生产厂家 | 高压管道冲洗清洗机_液压剪叉式升降机平台厂家-林君机电 | 江苏全风,高压风机,全风环保风机,全风环形高压风机,防爆高压风机厂家-江苏全风环保科技有限公司(官网) | 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 铝扣板-铝方通-铝格栅-铝条扣板-铝单板幕墙-佳得利吊顶天花厂家 elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 超高频感应加热设备_高频感应电源厂家_CCD视觉检测设备_振动盘视觉检测设备_深圳雨滴科技-深圳市雨滴科技有限公司 | 天津中都白癜风医院_天津白癜风医院_天津治疗白癜风 | 不锈钢散热器,冷却翅片管散热器厂家-无锡市烨晟化工装备科技有限公司 | 电动球阀_不锈钢电动球阀_电动三通球阀_电动调节球阀_上海湖泉阀门有限公司 | 对照品_中药对照品_标准品_对照药材_「格利普」高纯中药标准品厂家-成都格利普生物科技有限公司 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 钢板仓,大型钢板仓,钢板库,大型钢板库,粉煤灰钢板仓,螺旋钢板仓,螺旋卷板仓,骨料钢板仓 | 防爆正压柜厂家_防爆配电箱_防爆控制箱_防爆空调_-盛通防爆 | 变色龙云 - 打包app_原生app_在线制作平台_短链接_ip查询 | 植筋胶-粘钢胶-碳纤维布-碳纤维板-环氧砂浆-加固材料生产厂家-上海巧力建筑科技有限公司 | 科客,主见不成见| 氟氨基酮、氯硝柳胺、2-氟苯甲酸、异香兰素-新晨化工 | 论文查重_免费论文查重_知网学术不端论文查重检测系统入口_论文查重软件 |