gpt4 book ai didi

javascript - 无法访问关于 :blank iframe in IE after the document. 的域更改

转载 作者:可可西里 更新时间:2023-11-01 02:44:53 27 4
gpt4 key购买 nike

有没有人知道当 document.domain 已更改时在 IE 中的页面上创建 about:blank iframe 的任何解决方法?

在更改 document.domain 属性后,IE 似乎不允许访问空/动态 iframe。

例如,假设您正在动态创建一个 iframe,然后向其中注入(inject)一些 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:""一直没有成功。

最佳答案

您愿意将 iframe 的域更改为吗?以下(对我而言)在 IE7,9 中有效

document.domain = 'jshell.net';

var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
iframe.src = "javascript:document.write('<script>document.domain=\"jshell.net\"</script>')";

// Now write some content to the iframe
iframe.contentWindow.document.write('<html><body><p>Hello world</p></body></html>');

编辑:如果这是页面上的内联脚本,那么您需要拆分结束 </script>标记。参见 why-split-the-script-tag

关于javascript - 无法访问关于 :blank iframe in IE after the document. 的域更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14715427/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com