Javascript Facebook如何';s Like按钮是否具有跨域访问权限以将HTML添加到父窗口?

Javascript Facebook如何';s Like按钮是否具有跨域访问权限以将HTML添加到父窗口?,javascript,facebook,cross-domain,Javascript,Facebook,Cross Domain,免责声明:我将尽我所能解释我的目标,但我对跨域策略的了解非常有限。我已经在堆栈周围搜索过了,但若有我遗漏的答案,请告诉我 我们在我们的网站上实施了该标准。像和发送这样的按钮位于指向facebook.com的iFrame内 当您点击Send按钮时,HTML被附加为Facebook iFrame的同级(即我们的DOM) 我想知道的是FB是如何在不违反跨域策略的情况下将HTML添加到我们网站上的div中的 这是我的。要查看发生了什么,请在单击发送时检查DOM,因为您使用javascript而不是ifr

免责声明:我将尽我所能解释我的目标,但我对跨域策略的了解非常有限。我已经在堆栈周围搜索过了,但若有我遗漏的答案,请告诉我

我们在我们的网站上实施了该标准。像和发送这样的
按钮位于指向facebook.com的iFrame内

当您点击
Send
按钮时,HTML被附加为Facebook iFrame的同级(即我们的DOM)

我想知道的是FB是如何在不违反跨域策略的情况下将HTML添加到我们网站上的div中的


这是我的。要查看发生了什么,请在单击发送时检查DOM,因为您使用javascript而不是iframe添加发送按钮。Iframe是在页面加载/加载后生成的


由于这个原因,脚本能够访问和编辑您和Iframe的内容和DOM元素。正如您所知和提到的,iframe无论如何都无法到达它的父级。

感谢@CBroe为我指出了答案:

通过


window.postMessage
是一种安全启用跨源通信的方法。通常,仅当且仅当执行不同页面的页面位于具有相同协议(通常都是http)、端口号(80是http的默认值)和主机(两个页面将modulo document.domain设置为相同值)的位置时,才允许不同页面上的脚本相互访问。window.postMessage提供了一种受控机制,可以在正确使用时以安全的方式绕过此限制。

您可以发布一个屏幕截图或证明它可以做到这一点吗?我还没有看到这种情况发生——对我来说,这是在iframe中添加它,但绝对定位在按钮之外,这是我的职责。如果在检查DOM时单击
Send
,一个
fb\u edge\u comment\u widget
span将被附加到
fb like
div中。好吧,Facebook JavaScript SDK位于页面的“内部”,那么为什么它不能像页面中的任何其他脚本一样操纵DOM…?这里没有什么黑魔法,如果域不同,iFrame中的really.JS应该无法访问父级中的任何脚本。感谢您对Enes的响应。问题不在于家长如何操纵家长。。。那部分我理解。发生的事情似乎是iFrame告诉父级添加
fb\u edge\u comment\u小部件
span。看我的。想法?这是“正常的”跨域通信,就像FB在嵌入插件时使用的很多东西一样。在现代浏览器中通过postMessage完成,在旧浏览器中通过一些变通方法完成。我试图说,iframe正在处理一些行为。例如,当iframe中有标记时,js在父页面中检查该标记并将其带到父页面。这就是我想说的,如果可以的话,我很高兴:)如果我理解你的意思,你是在暗示家长正在监视子窗口以查看DOM的更改。我认为这也违反了跨域策略:(不,我知道,父域可以用一点JS代码检查子域。