我有一个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/