Запретить ссылки в iframe для навигации / захвата Cordova WebView, особенно в IOS

У меня есть приложение Cordova, которое отображает внешний контент с помощью iframe (в этом случае встроенное видео на YouTube)

При нажатии на ссылки внутри iframe (например, логотип youtube), весь веб-просмотр перемещается на сайт youtube, а не только в iframe. (без возможности вернуться, вам нужно убить приложение), поведение, которое я хочу предотвратить.

На android плагин cordova api предоставляет метод onOverrideUrlLoading, который должен блокировать нежелательную навигацию. (сам еще не проверял)

Я не нашел подобного метода ни на занятиях ios cordova, ни на ios webview api. но я не очень знаком с IOS.

Я также пробовал (на Android и IOS) атрибут песочницы iframe https://developer.mozilla.org/en/docs/Web/HTML/Element/iframe Это работает для предотвращения сценариев (не то, что мне это нужно atm, просто чтобы проверить, что атрибут делает что-то), но не для предотвращения навигации (чтобы включить навигацию, вы должны добавить allow-top-navigation, а я нет)

1 ответ

Решение

Используйте атрибут песочницы html5, не разрешая allow-top-navigation & allow-popups

<iframe sandbox="allow-scripts allow-same-origin"...

Проверено на: IOS 8/7.1, Android 4.4

В моей предыдущей проверке я добавил allow-popups к значению песочницы

<iframe sandbox="allow-scripts allow-same-origin allow-popups"...
Другие вопросы по тегам