Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android window.location.href javascript不会触发shouldOverrideUrlLoading_Android - Fatal编程技术网

Android window.location.href javascript不会触发shouldOverrideUrlLoading

Android window.location.href javascript不会触发shouldOverrideUrlLoading,android,Android,我在nexous one上的测试(使用android 2.2编译)表明,当页面通过window.location.href重定向时,不会触发shouldOverrideUrlLoading。onPageFinished像往常一样触发 有人能建议如何拦截javascript页面重定向吗? 是否有其他方法可以在javascript中重定向页面,从而触发shouldOverrideUrlLoading? 这是一个应该重写的错误吗 谢谢 六月 有人能建议如何拦截javascript页面重定向吗 修改Ja

我在nexous one上的测试(使用android 2.2编译)表明,当页面通过window.location.href重定向时,不会触发shouldOverrideUrlLoading。onPageFinished像往常一样触发

有人能建议如何拦截javascript页面重定向吗? 是否有其他方法可以在javascript中重定向页面,从而触发shouldOverrideUrlLoading? 这是一个应该重写的错误吗

谢谢

六月

有人能建议如何拦截javascript页面重定向吗

修改Javascript,以便通过
addJavascriptInterface()
,对注入到
WebView
的某些对象调用方法

这是一个应该重写的错误吗


可能吧。这当然是一个限制。

在我的情况下,当使用
window.location=”时http://xxx“
在我的网页中,不会触发事件
shouldOverrideUrlLoading()

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

if (url.startsWith("androidurl://")) {
    url = url.replaceAll("androidurl://", "http://");
}
这将把自定义协议更改回
http://
协议,您可以从那里处理正确的url

这对我很有用。

也许您可以使用WebChromeClientonJsBeforeUnload()截取您将要离开当前页面的事件。重写onJsBeforeUnload()并将标志设置为true

然后使用WebViewClientonLoadResource()截取要加载的URL。如果flag为true,则执行您想要的任何操作,例如,以其他意图打开URL;否则什么也不做

此外,请记住在HTML中添加:

<script> window.onbeforeunload = function(){  
   return "Leave?";  
}; </script>
window.onbeforeunload=function(){
是否返回“休假”;
}; 

这是一个bug,因为如果您更改location.href,您确实会加载一个URL。因此,通过覆盖这个并处理所有内容,您应该能够确保根本没有其他URL加载。人们认为WebView只是用来显示自己的页面。但是考虑到你想渲染远程站点,而不控制运行的JavaScript…@ CommonsWare,你能告诉我当我在DIV标签里面加载视图时如何获取URL?并且只使用一个index.html并将其他文件数据加载到索引文件的div标记中。在这种情况下,如何获取url