32

Android に webView があり、その中で HTML Web ページを開きます。しかし、リンクや画像がたくさんあり、そのうちの 1 つをクリックすると、Web ビューに読み込まれます。この動作を無効にしたいので、リンクをクリックしてもロードしないでください。私はこの解決策を試し、自分用に少し編集しましたが、うまくいきませんでした。私のwebviewclientコード:

private boolean loaded = false;

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {

    if(loaded == false){
        view.loadUrl(url);
        loaded = true;
        return true;
    }else{
        return false;
    }

}

私の webview の実装と設定。

WebView wv = (WebView) findViewById(R.id.recipeWv);
    ourWebViewClient webViewClient = new ourWebViewClient();
    webViewClient.shouldOverrideUrlLoading(wv, URLsave);
    wv.setWebViewClient(webViewClient);
    wv.setFocusableInTouchMode(false);
    wv.setFocusable(false);
    wv.setClickable(false);
    WebSettings settings = wv.getSettings();
    settings.setDefaultTextEncodingName("utf-8");

    settings.setLoadWithOverviewMode(true);
    settings.setBuiltInZoomControls(true);

例: ユーザーが私の webview で StackOverflow ホームページを開き、リンクの 1 つ (「質問」など) をクリックすると、webview は StackOverflow ホームページに留まる必要があります。

4

8 に答える 8

37

現在の URL をクラス変数に保存し、読み込まれた URL と同じかどうかを確認する必要があります。ユーザーがリンクをクリックすると、shouldOverrideUrlLoadingが呼び出され、Web サイトをチェックします。このようなもの:

private String currentUrl;

public ourWebViewClient(String currentUrl) {
    this.currentUrl = currentUrl;
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url.equals(currentUrl)) {
        view.loadUrl(url);  
    }
    return true;
}

重要:を に設定することを忘れないWebViewClientでくださいWebView

ourWebViewClient webViewClient = new ourWebViewClient(urlToLoad);
wv.setWebViewClient(webViewClient);
于 2013-10-23T21:24:03.600 に答える
17

WebViewClient を実装し、WebView Client のこのメソッドから true を返すだけです

webView.setWebViewClient(new WebViewClient(){
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return true;
    }
});
于 2016-03-01T06:24:13.613 に答える
0

inject javascript の使用@Override onPageFinished

view.loadUrl(
    javascript: (function () {


        document.addEventListener('click', function (e) {
            e.stopPropagation();
        }
            , true);

    })()
);
于 2020-01-19T03:02:28.667 に答える