iframe之后的任何HTML代码都不使用document.write执行

时间:2011-01-11 02:02:18

标签: javascript browser iframe document.write

当我尝试在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>”。寻找你的好意见。

2 个答案:

答案 0 :(得分:2)

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

markup = "<div>Hello</div><iframe ..../><div>Bye Bye</div>"
markup = markup.replace(/<iframe([^>]*?)\/>/g, '<iframe$1></iframe>')
document.write(markup);

答案 1 :(得分:1)

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

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

document.write=function(str){
    str=str.replace(/<iframe([^>]*?)\/>/ig,'<iframe$1></iframe>');
    return document.writeln(str);
}