d1x*_*ord 6 android popup android-webview
我正在开发一个应用程序,它有一个活动/片段,显示某些网站的网页.Android webview(chrome)正在弹出警报对话框,用于订阅其中一些推送通知,这会导致奇怪的闪烁/闪烁问题.
这是webview及其设置的部分
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(false);
webSettings.setDomStorageEnabled(true);
webSettings.setAppCacheEnabled(true);
webSettings.setAppCacheMaxSize(5 * 1024 * 1024);
webSettings.setAppCachePath("");
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
webSettings.setUserAgentString(mUserAgent);
webView.setBackgroundColor(Color.argb(1, 0, 0, 0));
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
BaseWebViewFragment.this.onReceivedTitle(title);
}
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
progressChanged(view, newProgress);
}
});
Run Code Online (Sandbox Code Playgroud)
我需要完全禁用这些弹出窗口,但无法找到方法.
我尝试完全禁用JS,但它导致某些网站的加载问题.
我也尝试覆盖WebChromeClient的onJS ...()方法并取消/确认结果,但无济于事.
这是什么工作方法?
与此类似,您应该获取 html 作为字符串并将此脚本标记插入其头部
<script type = "text/javascript">
window.alert = function() {};
</script>
Run Code Online (Sandbox Code Playgroud)
所以如果你的 html 字符串是htmlStr,它是这样的:
String script = "<script type = \"text/javascript\">\n" +
" window.alert = function() {}\n" +
" </script>";
String target = "<head>";
int ind = htmlStr.indexOf(target);
StringBuilder htmlBuilder = new StringBuilder(htmlStr);
htmlBuilder.insert(ind + target.length(), script);
String newHtml = htmlBuilder.toString();
Run Code Online (Sandbox Code Playgroud)
然后将newHtml加载到 WebView 中,如下所示:
webView.loadDataWithBaseURL(null, newHtml, "text/html", "UTF-8", null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
530 次 |
| 最近记录: |