Запретить ссылки в 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"...