有没有人知道在document.domain
发生更改时在IE的页面上创建about:blank
iframe的任何解决方法?无法在document.domain更改后在IE中访问about:空白iframe
在document.domain
属性被更改后,IE似乎不允许访问空/动态iframe。
例如,假设你是动态创建一个iframe,然后注入一些HTML进去:
// Somewhere else, some 3rd party code changes the domain
// from something.foo.com to foo.com
document.domain = 'jshell.net';
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
// In IE, we can't access the iframe's contentWindow! Access is denied.
iframe.contentWindow.document.body.style.backgroundColor = 'red';
这里有一个的jsfiddle活生生的例子:http://jsfiddle.net/XHkUT/
你会发现它工作正常FF/Webkit,但不包含IE。这特别令人沮丧,因为这会影响后document.domain
属性已更改(如上面的示例中)后创建的iframe。
IE规则似乎是“如果您在更改document.domain
后创建动态/空iframe,则无法访问其DOM。”
设置iframe src
为about:blank
javascript:void(0)
或javascript:""
已失败。
* about:*协议可能会受限于IE设置/版本:http://msdn.microsoft.com/en-us/library/ee330729(v=vs.85).aspx(请参阅'关于协议限制“章节) –
注意:此错误在IE11中似乎已得到修复。 – EricLaw