Android window.location.href javascript不会触发shouldOverrideUrlLoading
我在nexous one上的测试(使用android 2.2编译)表明,当页面通过window.location.href重定向时,不会触发shouldOverrideUrlLoading。onPageFinished像往常一样触发 有人能建议如何拦截javascript页面重定向吗? 是否有其他方法可以在javascript中重定向页面,从而触发shouldOverrideUrlLoading? 这是一个应该重写的错误吗 谢谢 六月 有人能建议如何拦截javascript页面重定向吗 修改Javascript,以便通过Android window.location.href javascript不会触发shouldOverrideUrlLoading,android,Android,我在nexous one上的测试(使用android 2.2编译)表明,当页面通过window.location.href重定向时,不会触发shouldOverrideUrlLoading。onPageFinished像往常一样触发 有人能建议如何拦截javascript页面重定向吗? 是否有其他方法可以在javascript中重定向页面,从而触发shouldOverrideUrlLoading? 这是一个应该重写的错误吗 谢谢 六月 有人能建议如何拦截javascript页面重定向吗 修改Ja
addJavascriptInterface()
,对注入到WebView
的某些对象调用方法
这是一个应该重写的错误吗
可能吧。这当然是一个限制。在我的情况下,当使用
window.location=”时http://xxx“
在我的网页中,不会触发事件shouldOverrideUrlLoading()
但是,如果我使用自定义url方案或协议,例如androidurl://
,shouldOverrideUrlLoading()。我的解决方法是使用自定义协议,并在shouldOverrideUrlLoading()
方法中添加以下代码:
if (url.startsWith("androidurl://")) {
url = url.replaceAll("androidurl://", "http://");
}
这将把自定义协议更改回http://
协议,您可以从那里处理正确的url
这对我很有用。也许您可以使用WebChromeClient的onJsBeforeUnload()截取您将要离开当前页面的事件。重写onJsBeforeUnload()并将标志设置为true
然后使用WebViewClient的onLoadResource()截取要加载的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