Как получить ссылку на iframe в Webview для запуска браузера? - PullRequest
10 голосов
/ 13 апреля 2011

Я использую WebView для отображения страницы, на которой html включает iframe, где src = "xxxxx.php".

Этот iframe загружается как рекламное изображение с базовой ссылкой. Если я нажимаю на это изображение (ссылку), он пытается загрузить новую страницу в оригинальном iframe (который не показывает много в этом небольшом пространстве). Я хочу щелкнуть ссылку, чтобы открыть указанную страницу в новом окне браузера, оставив мое приложение без изменений.

Если я использую браузер Android для отображения исходной страницы и нажимаю на этот iframe, он загружает ссылку как новую страницу. Как мне получить такое же поведение с WebView? Использование WebViewClient с shouldOverrideUrlLoading (), по-видимому, не вызывается ссылкой iframe.

Ответы [ 3 ]

15 голосов
/ 23 апреля 2011

У меня была похожая проблема с объявлениями Google в источнике WebView, поскольку они также загружались в iframe. Вот как я решил это:

Попробуйте сделать это в вашем WebViewClient, обычно под yourOverrideUrlLoading ()

            @Override
            public void onLoadResource (WebView view, String url) {
                if (url.contains("googleads")) {
                    if(view.getHitTestResult().getType() > 0){
                        view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                        view.stopLoading();
                        Log.i("RESLOAD", Uri.parse(url).toString());
                    }
                }
            }
5 голосов
/ 03 сентября 2013

Я могу предложить одно исправление к предыдущему коду:

@Override
    public void onLoadResource (WebView view, String url) {
        if (url.contains("googleads")) {
            if(view.getHitTestResult() != null && 
                    (view.getHitTestResult().getType() == HitTestResult.SRC_ANCHOR_TYPE ||
                    view.getHitTestResult().getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE)){
                view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                view.stopLoading();
            }
        }
    }
0 голосов
/ 20 февраля 2018

Чтобы обнаружить ссылки, клики внутри iframe.Ссылки должны иметь дополнительные параметры.Я обнаружил, что:

  1. shouldOverrideUrlLoading WebViewClient будет выполняться для случая, когда ссылка iframe имеет целевой параметр target = "_ parent" или target = "_ top",
  2. onCreateWindowWebViewClient, в случае, если ссылка iframe содержит параметр target = "_ blank"

Кажется, что ссылки iframe без параметра target невозможно точно отслеживать через WebViewClient

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...