Как получить ссылку Webview iframe для запуска браузера?
Я использую WebView для отображения страницы, в которой html включает iframe, где src= "xxxxx.php".
Этот iframe загружается как изображение с базовой ссылкой. Если я нажму на это изображение (ссылку), он попытается загрузить новую страницу в исходном iframe (что мало показывает в этом небольшом пространстве). То, что я хочу сделать, - это щелкнуть ссылку, чтобы открыть указанную страницу в новом окне браузера, оставив мое приложение как есть.
Если я использую браузер Android для отображения исходной страницы и нажимаю на этот iframe, он загружает ссылку как новую страницу. Как получить такое же поведение с помощью WebView? Использование WebViewClient с shouldOverrideUrlLoading(), похоже, не вызвано ссылкой iframe.
Ответы
Ответ 1
У меня была аналогичная проблема с рекламой google в источнике WebView, так как они загружаются также в iframe. Вот как я это решил:
Попробуйте это в своем WebViewClient, как правило, под вашим mustOverrideUrlLoading()
@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());
}
}
}
Ответ 2
Я могу предложить одно исправление для предыдущего кода:
@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();
}
}
}
Ответ 3
Чтобы обнаружить ссылки на клики внутри iframe. Ссылки должны иметь дополнительные параметры. Я обнаружил, что:
- shouldOverrideUrlLoading WebViewClient будет выполняться для случая, когда ссылка iframe имеет целевой параметр target = "_ parent" или target = "_ top",
- onCreateWindow WebViewClient, в случае, если ссылка iframe содержит параметр target = "_ blank"
Кажется, что ссылки iframe без целевого параметра невозможно точно отслеживать через WebViewClient