Dr.*_*ins 5 android webview webviewclient
我有一个javascript函数'gotoMainPage()'
function gotoMainPage( ) {
window.location.href = "main/main.do";
}
Run Code Online (Sandbox Code Playgroud)
现在,shouldOverrideUrlLoading(..)如果gotoMainPage( )由于"直接用户交互"而执行,则会调用WebViewClient ,例如用户单击此div:
<div.... onclick='gotoMainPage();'/>
但是,如果通过setTimeout( gotoMainPage, 100 );或通过XMLHttpRequest回调执行,shouldOverrideUrlLoading(..)则永远不会调用,但请求的页面会被加载到webview.
我错过了一个明显的解释还是这个错误?
任何人?
小智 6
在我的例子中,当在我的网页中使用window.location ="http:// xxx"时,事件shouldOverrideUrlLoading()不会被触发.
但是,如果我使用自定义URL方案或协议(如"androidurl://"),则会触发shouldOverrideUrlLoading().我的解决方法是使用自定义协议并在shouldOverrideUrlLoading()方法中添加以下代码:
if (url.startsWith("androidurl://")) {
url = url.replaceAll("androidurl://", "http://");
}
Run Code Online (Sandbox Code Playgroud)
这会将自定义协议更改回"http://"协议,您可以从那里处理正确的URL.
这适合我.
我自己也看到过这种情况,恕我直言,这显然是一个错误。也许你可以抓住:
@Override
public void onLoadResource (WebView view, String url)
{
}
Run Code Online (Sandbox Code Playgroud)
和/或
@Override
public void onPageFinished(WebView webView, String url)
{
}
Run Code Online (Sandbox Code Playgroud)
我自己尝试过,发现 onLoadResource 会被触发,即使 shouldOverride 没有被触发。
| 归档时间: |
|
| 查看次数: |
9004 次 |
| 最近记录: |