使用javascript阻止Android WebView导航
我想在页面加载后将一些Javascript注入到WebView中,以防止用户离开该页面 此页面上有使用Javascript导航用户的链接,因此使用javascript阻止Android WebView导航,javascript,android,android-webview,Javascript,Android,Android Webview,我想在页面加载后将一些Javascript注入到WebView中,以防止用户离开该页面 此页面上有使用Javascript导航用户的链接,因此WebViewClient::shouldOverrideUrlLoading是不够的。它甚至不会被解雇 private final String javascript = "javascript:window.onbeforeunload = function(){ return false; };" public void onPageFinishe
WebViewClient::shouldOverrideUrlLoading
是不够的。它甚至不会被解雇
private final String javascript = "javascript:window.onbeforeunload = function(){ return false; };"
public void onPageFinished(WebView view, String url) {
getWebView().loadUrl(javascript);
}
我希望上面的代码可以工作,但它没有。点击不同的元素仍然允许用户从起始url导航
有办法做到这一点吗?android webview遵循与所有其他浏览器相同的规则,这意味着
onbeforeunload
无法以这种方式工作。您必须在阻止基于元素导航的事件中绑定
假设您的链接实际上是a
标记,您可以在页面加载时执行类似操作
var Anchors = document.getElementsByTagName("a");
for (var i = 0; i < Anchors.length ; i++) {
Anchors[i].addEventListener("click",
function (event) {
event.preventDefault();
},
false);
}
var-Anchors=document.getElementsByTagName(“a”);
对于(var i=0;i
如果链接不是锚定的,这将不起作用,但如果您试图围绕由其他人设计的用户界面编写代码,而您无法访问这些内容,则会发生这种情况android webview遵循与所有其他浏览器相同的规则,这意味着
onbeforeunload
不会以这种方式工作。您必须在阻止基于元素导航的事件中绑定
假设您的链接实际上是a
标记,您可以在页面加载时执行类似操作
var Anchors = document.getElementsByTagName("a");
for (var i = 0; i < Anchors.length ; i++) {
Anchors[i].addEventListener("click",
function (event) {
event.preventDefault();
},
false);
}
var-Anchors=document.getElementsByTagName(“a”);
对于(var i=0;i
如果链接不是锚定链接,这将不起作用,但如果您试图围绕其他人设计的UI编写代码,而您无权访问这些内容,则可以通过设置自定义webview客户端来实现:
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// put your code here
return true; //Indicates WebView do NOT load the url;
}
});
可以通过设置自定义webview客户端:
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// put your code here
return true; //Indicates WebView do NOT load the url;
}
});
所以我觉得这对我来说不太合适。我在最初的帖子中没有具体说明的一点是,我正试图捕捉点击导航链接的用户,并使用该url启动Android浏览器应用程序。我已经成功地做到了这一点。但是,当用户点击“上一步”按钮并返回到我的应用程序时,WebView也向前移动了。我曾尝试在WebView上以编程方式调用
goBack()
,效果很好。但是,用户会看到页面来回切换,这不是一个很好的体验。所以我认为这对我来说不太合适。我在最初的帖子中没有具体说明的一点是,我正试图捕捉点击导航链接的用户,并使用该url启动Android浏览器应用程序。我已经成功地做到了这一点。但是,当用户点击“上一步”按钮并返回到我的应用程序时,WebView也向前移动了。我曾尝试在WebView上以编程方式调用goBack()
,效果很好。然而,用户会看到页面来回切换,这不是一个很好的体验。