5

当我尝试在 IE 中使用 documnet.write 插入 iframe 时,我成功了。但是,之后的任何 html 代码都不会执行。

document.write("<div>Hello</div><iframe ..../><div>Bye Bye</div>");

这里不执行“Bye Bye”字符串。

您可以输入浏览器网址进行即时检查

javascript:document.write("<div>Hello</div><iframe ..../><div>Bye Bye</div>");

经过反复试验,我发现如果我按以下方式关闭 iframe 标签,它就可以工作。

<iframe ...></iframe> instead of <iframe  ...  />

现在,问题是“我没有任何机会将其更改<iframe ../><iframe .. ></iframe>”。寻求您的善意建议。

4

2 回答 2

2

如果允许您在发送之前更改字符串,document.write那么您可以自己修改标记,如下所示:

markup = "<div>Hello</div><iframe ..../><div>Bye Bye</div>"
markup = markup.replace(/<iframe([^>]*?)\/>/g, '<iframe$1></iframe>')
document.write(markup);
于 2011-01-11T02:14:10.377 回答
1

如果您没有机会更改字符串(即您无法事先阅读)和document.write部分代码,我假设您至少有权在文档中编辑/插入一些代码(否则您应该没有这个问题,因为你实际上什么都不做)。

这样,尝试document.write()通过在事情发生之前插入一些代码来调整方法:

document.write=function(str){
    str=str.replace(/<iframe([^>]*?)\/>/ig,'<iframe$1></iframe>');
    return document.writeln(str);
}
于 2011-01-11T05:16:12.380 回答