页面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) –