c1p*_*ph4 10 javascript android block overlays webview
现在,我使用这行代码来至少试图通过阻止弹出窗口JavaScript中webview:
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
1)我不明白为什么我必须将其切换为"true"它正在工作
2)是否有其他技术阻止webview中的弹出窗口?
非常感谢帮助.
我们在等式的WebView 设置端。
乍一看有一个明显的注释,但是如果您不需要 JavaScript,请不要启用 JavaScript,那么您就不会JavaScript弹出窗口。我假设你DO需要JavaScript(记住它可能是 XSS脆弱)和想要做什么,你可以禁用该弹出窗口可以不可避免地随之而来。
信息:
WebViewClient。覆盖您的这种行为WebView,例如在您的网站中打开链接WebView。
WebChromeClient可让您处理Javascript's alert()和其他功能。
OP(1)setJavaScriptCanOpenWindowsAutomatically(true)是通常阻塞仅完成后外一个的事件处理程序。
OP =原始帖子; O)。
这就是我设置常规的方式webview:
WebView webView = (WebView) this.findViewById(R.id.webView1);//CustomWebView ?
WebSettings webView_settings = webView.getSettings();
//by setting a WebClient to catch javascript's console messages :
WebChromeClient webChromeClient = new WebChromeClient() {
public boolean onConsoleMessage(ConsoleMessage cm) {
Log.d(TAG, cm.message() + " -- From line "
+ cm.lineNumber() + " of "
+ cm.sourceId() );
return true;
}
});
webView_settings.setDomStorageEnabled(true);
WebViewClient webViewClient = new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
setTitle(view.getTitle());
//do your stuff ...
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("file"))
{
// Keep local assets in this WebView.
return false;
}
}
});
//webView.setWebViewClient(new HelpClient(this));//
webView.setWebChromeClient(webChromeClient);
webView.setWebViewClient(webViewClient);
webView.clearCache(true);
webView.clearHistory();
webView_settings.setJavaScriptEnabled(true);//XSS vulnerable set to false ?
webView_settings.setJavaScriptCanOpenWindowsAutomatically(true);//set to false ?
webView.loadUrl("file:///android_asset/connect.php.html");//load something
Run Code Online (Sandbox Code Playgroud)
From @markproxy如果您扩展WebChromeClient,则可以覆盖其onJsAlert()方法并阻止内置处理程序以发出警报。在使用它时,您可能需要阻止对confirm()and的调用prompt():
WebChromeClient webChromeClient = new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
result.cancel();
return true;
}
@Override
public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
result.cancel();
return true;
}
@Override
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
result.cancel();
return true;
}
};
webView.setWebChromeClient(webChromeClient);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1190 次 |
| 最近记录: |