頁面A和頁面B位於不同的域。來自外部域iframe的Javascript調用函數
A被的iFrame網頁B
我需要調用一個函數,它是第B從頁面A.
這是可能沒有像porthole?
基本上我想要做的是一個簡單的推送通知(A通知B),不需要傳輸任何內容。
頁面A和頁面B位於不同的域。來自外部域iframe的Javascript調用函數
A被的iFrame網頁B
我需要調用一個函數,它是第B從頁面A.
這是可能沒有像porthole?
基本上我想要做的是一個簡單的推送通知(A通知B),不需要傳輸任何內容。
如果你想避免使用特定的庫,你可以使用它的基礎上的概念和滾動你自己的。這是一篇非常深入的文章,描述了不使用庫的技術:http://softwareas.com/cross-domain-communication-with-iframes。
把A和B放在同一個域中,不同的子域是好的。然後在iframe A中,可以調用parent.function_name(parameter1,parameter 2)。如果你需要經常調用該函數,你可能會想這樣做:
function p(data, div_id){parent.p(data, div_id);}
然後在iframe中,你可以調用P(數據,div_id),這實際上將調用網頁B的功能。我用了很多彗星流。如果你有興趣,你可以看一下這,基本上使用iframe與數據通訊:
http://www.shanison.com/2010/05/10/stop-the-browser-「活動指示器 - 的 - 厄運」 -while加載-彗星永遠的iframe/
子域解決方案不是一個選項。 – Chad
是否有任何理由不做「var p = parent.p;」? –
有一個HTML5方法與cross window messaging做到這一點。
當HTML5不可用,甚至可以在不同來源之間使用時,有various work-arounds。
你對兩個域都有控制權嗎? –
很好。我完全控制了A,我可以說服B的所有者在他的頁面上放置一個函數/腳本。 – Chad
那麼,你可能可以使用這個:[window.postMessage](https://developer.mozilla.org/en/DOM/window.postMessage)。 (注意:這是一個相當新的API) –