gpt4 book ai didi

android - 如果在超时回调中修改了 "window.location.href",则不执行 shouldOverrideUrlLoading(...)

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:17:46 28 4
gpt4 key购买 nike

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

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


现在,WebViewClient 的 shouldOverrideUrlLoading(..)如果 gotoMainPage( ) 被调用作为“直接用户交互”的结果执行,例如用户单击此 div:
<div.... onclick='gotoMainPage();'/>

但是,如果执行是通过 setTimeout( gotoMainPage, 100 ); 完成的或通过 XMLHttpRequest回调,shouldOverrideUrlLoading(..)永远不会被调用,但请求的页面被加载到 webview 中。

我是否遗漏了一个明显的解释或者这是一个错误?

有人吗?

最佳答案

在我的例子中,当在我的网页中使用 window.location = "http://xxx"时,事件 shouldOverrideUrlLoading() 没有被触发。

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

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

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

这对我有用。

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

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com