Я обнаружил, что я могу выполнять междоменную связь со страницы на file://
и iframe, размещенной на удаленном узле с свойством contentWindow iframe.
Например, на устройстве у меня есть html-страница в файле url://.../index.html, которая загружает кордову и содержит iframe:
<script type="text/javascript" src="cordova.js"></script>
<iframe id="appframe"></iframe>
На этой странице я могу выполнить javascript, который загружает iframe и сохраняет ссылку на объект на iframed странице следующим образом:
var iframe = document.getElementById("appframe");
iframe.onload = function(){
iframe.contentWindow.cordova = window.cordova;
}
iframe.src = "http://www.example.com/appframe.html";
Теперь на странице внутри iframe http://www.example.com/appframe.html я могу выполнить вызов cordova, например:
cordova.exec(null, null, "StatusBar", "hide", []);
и это неожиданно срабатывает, вызывая собственный слой плагина StatusBar cordova и скрывая строку состояния.
Мой вопрос:
Безопасно ли это использовать или является хаком, который не будет работать в будущей версии браузеров?
Я тестировал его на устройствах iOS 9 и Android 5.