shouldOverrideUrlLoading

shouldOverrideUrlLoading

我有一个JavaScript函数'gotoMainPage()'

function gotoMainPage( ) {
    window.location.href = "main/main.do";
}

现在,如果由于“直接用户交互”(例如用户单击此div)而执行了shouldOverrideUrlLoading(..),则将调用WebViewClient的gotoMainPage( ):<div.... onclick='gotoMainPage();'/>但是,如果执行是通过setTimeout( gotoMainPage, 100 );XMLHttpRequest回调完成的,则永远不会调用shouldOverrideUrlLoading(..),而是将请求的页面加载到Webview中。

我是否缺少明显的解释,或者这是一个错误?

任何人?

最佳答案

就我而言,在我的网页中使用window.location =“http://xxx”时,不会触发事件shouldOverrideUrlLoading()。

但是,如果我使用自定义网址方案或协议(protocol)(例如“androidurl://”),则会触发shouldOverrideUrlLoading()。我的解决方法是使用自定义协议(protocol),并在shouldOverrideUrlLoading()方法中添加以下代码:

if (url.startsWith("androidurl://")) {
    url = url.replaceAll("androidurl://", "http://");
}

这会将自定义协议(protocol)更改回“http://”协议(protocol),您可以从那里处理正确的网址。

这对我有用。

关于android - 如果在超时回调中修改了 "window.location.href",则不执行shouldOverrideUrlLoading(...),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5228926/

10-12 01:54