作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的页面上,我正在使用 document.write 编写一个外部 JS 和一个 iframe,如下所示
document.write("<sc" + "ript src=\"http://d2hzts1b0z7hqh.cloudfront.net/arb.js\"></script>");
document.write("<iframe id='mytestframe'></iframe>");
document.close();
var frame = document.getElementById("mytestframe");
console.log(frame);
最后一个console.log 语句打印的frame 值为'null'。但是如果我注释掉第一行 document.write("<sc" + "ript src=\"http://d2hzts1b0z7hqh.cloudfront.net/arb.js\"></sc" + "ript>");
日志语句打印一个节点实例。
谁能解释一下这种令人惊讶的行为背后的原因。
您可以使用 JSFiddle here .
最佳答案
您调用 getElementById 的时间过早,请延迟它直到加载事件发生,或者将其放在调用 document.write 的元素下方的不同脚本元素中。
以下对我来说效果很好:
document.write('Hello World');
document.write('<script src="http://d2hzts1b0z7hqh.cloudfront.net/arb.js"><\/script>');
document.write('<iframe id="mytestframe"><\/iframe>');
document.close();
// Delay looking for iframe until page is loaded
window.onload = function() {
var frame = document.getElementById("mytestframe");
console.log(frame);
};
请注意,您需要在脚本元素内的所有结束标记中引用“/”,因此 <\/
在所有这些上(例如 <\/iframe>
),而不仅仅是 <\/script>
.
关于javascript - document.write 的惊人行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29405752/
我是一名优秀的程序员,十分优秀!