応答がないときのWebViewウィンドウのラベルに新しいページを作成すると、ターゲット=「_ブランク」であります

WebViewのページが<A>ラベルをリンクした場合、ターゲット=「_ブランク」、そしてあなたのWebViewであり、任意の治療をしなかった、この時間は、無効なクリックの状況になり、それが何らかの形ではないでしょうか?

複数種類のによって定義されたターゲットは、
_blank:リンクは、それが新しいウィンドウ開くと述べ
_selfを:リンク(デフォルト)現在のウィンドウまたはフレームを有効
親ウィンドウまたはフレームワークにリンクを有効にします。_parentは
_top:トップレベルの表現の枠組みで新しいリンクを開くために
また、直接ターゲットにフレーム名を指定するだけでなく、左のツリーに、このようなCSDNクリックなどのオープンなフレームワーク内のリンクを表し、新しいリンクが右側にこれで開くことができます!

解決策は、相続WebChromeClient、書き換えonCreateWindowが鍵であり、単純です

1は、最初に設定、またはコールバックを行くことはありません。

webSetting.setSupportMultipleWindows(true);
第二に、コードを見て:
@Override
public boolean onCreateWindow(WebView webView, boolean isDialog, boolean isUserGesture, Message resultMsg) {

    X5WebView x5WebView = new X5WebView(activity);


    X5WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
    x5WebView.setWebChromeClient(new CustomWebChromeClient(activity));
    x5WebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            //拦截url,跳转新窗口
            if (activity != null) {
                Intent intent = new Intent(activity, MyWebActivity.class);
                intent.putExtra(Constants.INTENT_KEY_URL, url);
                activity.startActivity(intent);
            }
            //防止触发现有界面的WebChromeClient的相关回调
            return true;
        }
    });
    transport.setWebView(x5WebView);
    resultMsg.sendToTarget();

    return true;
}

公開された59元の記事 ウォン称賛88 ビュー190 000 +

おすすめ

転載: blog.csdn.net/geofferysun/article/details/79570182