2

私は頻繁window.postMessageに「メッセージ」イベント リスナーを使用して、親 Web ページとその子IFRAME要素内の Web ページの間でドメイン間で通信します。IFRAMEUIWebView とその子要素のWeb ページでこれが可能かどうかを知りたいです。

4

1 に答える 1

4

はい、これは確かに可能です。数日前に自分のアプリでこれをテストしたところ、成功しました。

通信したいWebページで、「メッセージ」イベントリスナーをウィンドウに追加しただけです

Web ページで UIWebView メッセージをリッスンする

window.addEventListener("message", onmessage, false);
window.onmessage = function(e){
    // e.data contains message
    // e.origin will equal NULL as theres no domain in UIWebView    
}

UIWebView は、埋め込まれた iFrame オブジェクトのウィンドウを取得して、postMessage を呼び出すだけです。

iFrameObject.contentWindow.postMessage("message", http://webpageDomain...);

逆に、UIWebView の html 実装は、上記のコードのようにメッセージをリッスンする必要があります。今回は e.origin がウェブページのドメインになります。

UIWebView には targetDomain がないため、Web ページは * を使用して次を呼び出す必要があります。

parent.postMessage("message", *);
于 2012-08-03T21:10:54.240 に答える