如何在Firefox中修复此消息?我正在使用一个有锚标签的Iframe?我想获得对此锚点的引用,但是当我尝试访问锚点时,我收到此错误:
var frameWindow = document.getElementById('myIframe').contentWindow;
var anchor = frameWindow.document.links[0]; //.getElementsByClassName('a');
anchor.onclick....
Run Code Online (Sandbox Code Playgroud)
Cee*_*man 21
在某些情况下,同源策略限制性太强,对使用多个子域的大型网站造成问题.以下是放松它的四种技巧:
如果两个窗口(或框架)包含将域设置为相同值的脚本,则为这两个窗口放宽同源策略,并且每个窗口可以与另一个窗口交互.例如,从orders.example.com和catalog.example.com加载的文档中的协作脚本可能会将其document.domain属性设置为"example.com",从而使文档看起来具有相同的来源并使每个文档都能够读取另一个的属性.这可能并不总是有效,因为存储在内部表示中的端口可以标记为null.换句话说,example.com端口80将成为example.com端口null因为我们更新document.domain.端口null可能不会被视为80(取决于您的浏览器),因此可能会失败或成功,具体取决于您的浏览器.
第二种放宽同源政策的技术正在以跨源资源共享的名义进行标准化.该草案标准使用新的Origin请求标头和新的Access-Control-Allow-Origin响应标头扩展了HTTP .它允许服务器使用标头显式列出可能请求文件或使用通配符的起源,并允许任何站点请求文件.诸如Firefox 3.5和Safari 4之类的浏览器使用这个新标头来允许XMLHttpRequest的跨源HTTP请求,否则这些请求将被同源策略禁止.[7]
另一种新技术,跨文档消息传递允许来自一个页面的脚本将文本消息传递到另一页面上的脚本,而不管脚本来源如何.postMessage()在Window对象上异步调用该方法会触发"onmessage"该窗口中的事件,从而触发任何用户定义的事件处理程序.一个页面中的脚本仍然无法直接访问另一个页面中的方法或变量,但它们可以通过此消息传递技术安全地进行通信.
JSONP允许页面通过向<script>页面添加元素来接收来自不同域的JSON数据,该元素从不同的域加载JSON响应.
函数调用是JSONP的"P" - 纯JSON周围的"填充",或者根据某些 "前缀".按照惯例,浏览器在其对服务器的请求中提供回调函数的名称作为命名查询参数值,通常使用名称jsonp或callback作为命名查询参数字段名称,例如,
<script type="application/javascript"
src="http://server2.example.com/Users/1234?jsonp=parseResponse">
</script>
Run Code Online (Sandbox Code Playgroud)
在此示例中,收到的有效负载将是:
parseResponse({"Name": "Foo", "Id": 1234, "Rank": 7});
Run Code Online (Sandbox Code Playgroud)
Tre*_*vor 10
如果iframe指向其他域,则会出现此错误.这是您的浏览器阻止跨站点脚本编写的示例:http://en.wikipedia.org/wiki/Cross-site_scripting