file://
のページとiframeのcontentWindowプロパティを持つリモートホストのiframeでドメイン間通信を行うことができます。私は実行することができますこのページでCordovaのクロスドメインファイル:// iframe contentwindowの通信
<script type="text/javascript" src="cordova.js"></script>
<iframe id="appframe"></iframe>
:コルドバをロードとiframeが含まれてい//.../index.html:私は、URLファイルでhtmlページを持っているデバイス上の例えば
IFRAMEをロードし、このようなiframeをページ内のオブジェクトの参照を保存するのjavascript:iframeの内部ページで今
var iframe = document.getElementById("appframe");
iframe.onload = function(){
iframe.contentWindow.cordova = window.cordova;
}
iframe.src = "http://www.example.com/appframe.html";
、http://www.example.com/appframe.html、私は例えば、コルドバの呼び出しを実行することができます。
cordova.exec(null, null, "StatusBar", "hide", []);
これは予期せず動作し、StatusBar cordovaプラグインのネイティブレイヤーを呼び出し、ステータスバーを非表示にします。
私の質問は:
を使用して、これは安全ですかブラウザの将来のバージョンでは動作しませんハックですか?
iOS 9とAndroid 5デバイスでテストしました。
appframeがfile:///から提供されている場合、これは機能しますか? –
興味深い。あなたがあなたのコードをあなたのアプリケーションに埋め込んでいることを知ったとき、あなたのアプリケーションがプラグインを介してサポートしているコードと 'cordova.exec'を調整することができます。これは、リモートWebサイトを制御しないと、おそらく他のバグと結びついて、本当に大きな特典を得ることができます。あなたが明示的に 'codeova'への参照をiframeに注入する必要があるので、あなたがそれを許さない限りセキュリティホールではありません。 –
@mircocあなたのように、私はまた、iframeのhtmlページ(ページのサイズは5Mbから100Mbになります)を読み込もうとしていますが、何度もアプリが「メモリ不足」というエラーでクラッシュします。この種の問題に直面しましたか?はいの場合は、この問題を解決する方法を教えてください。 – Deepika