5

JavaScript関数「gotoMainPage()」があります

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


現在、 WebViewClient は、ユーザーがこの div をクリックするなどの「直接的なユーザー操作」の結果として実行されたshouldOverrideUrlLoading(..)場合に呼び出されます。ウェブビュー。gotoMainPage( )
<div.... onclick='gotoMainPage();'/>

setTimeout( gotoMainPage, 100 );XMLHttpRequestshouldOverrideUrlLoading(..)

明らかな説明がありませんか、それともバグですか?

誰?

4

2 に答える 2

6

私の場合、私のWebページでwindow.location = "http:// xxx"を使用すると、イベントshouldOverrideUrlLoading()はトリガーされません。

ただし、「androidurl://」などのカスタムURLスキームまたはプロトコルを使用すると、shouldOverrideUrlLoading()が起動されます。私の回避策は、カスタムプロトコルを使用し、shouldOverrideUrlLoading()メソッドに次のコードを追加することです。

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

これにより、カスタムプロトコルが「http://」プロトコルに戻り、そこから正しいURLを処理できるようになります。

これは私のために働きます。

于 2011-10-22T03:01:22.057 に答える
3

私もこれが自分自身で発生するのを見てきましたが、これは明らかにバグです。おそらく、あなたはに引っかかることができます:

@Override
public void onLoadResource (WebView view, String url)
{

}

および/または

@Override
public void onPageFinished(WebView webView, String url) 
{

}

これを自分で試してみたところ、shouldOverride がなくても onLoadResource がトリガーされることがわかりました。

于 2011-05-27T10:22:07.397 に答える