解决方法
正如
David Dorward所述,JSON-P是最简单和最快的;但是,另外还有一个技巧,特别是使用两个iframe.
两个在不使用JSONP的情况下解决这个问题,您可以执行以下操作.这种技术假设您对父页面有某种开发权限.
两个域/站点上有三页.
父页面和xdcomm页面的页面托管在同一个域上,内容页面托管在任何其他域上.内容页面作为iframe嵌入到父页面中,xdcomm页面作为隐藏的iframe嵌入在内容页面中.
xdcomm页面包含一个非常简单的脚本,用于检测查询字符串中的GET参数,解析方法和args变量(其中args是JSON编码字符串)的字符串,然后在父页面中使用指定的参数执行指定的方法.一个例子可以是seen here(查看源).
即使JavaScript的“同源”策略限制了一个域上的代码访问另一个域的代码,如果域彼此嵌套(域A,嵌套在域B内,嵌套在域A内)也不重要.
因此,简而言之,内容页面通过xdcomm页面将消息发送到父页面,通过将iframe的来源更改为http://domaina.com/xdcomm.html?src=foo\u0026amp;args=[1,2,3,4].这将等同于在父页面中执行foo(1,4).
此外,知道已经有图书馆帮助您,例如easyxdm.我在这里解释的是他们使用的一种技术的基础,虽然它可能不是那么好,但它肯定是一个完整的功能和轻量级实现.