【发布时间】:2016-12-09 09:26:52
【问题描述】:
我的谷歌浏览器坚持认为我的 iframe 为空。奇怪的是,这会顺利返回元素:
iframe = document.getElementById("main");
但是当我尝试访问 iframe 的任何属性时,它说我无法从 null 获取属性(即使可以返回元素本身。)
我知道我可能必须等到它加载完毕,但是添加事件侦听器不起作用,因为它给了我同样的错误。
编辑:有些人询问它所在的上下文......
<!DOCTYPE html>
<html>
<head>
<script src="index.js"></script>
<link href="index.css" rel="stylesheet" type="text/css" />
</head>
<body onload="start()">
<noscript>Your browser is ancient and doesn't support JavaScript.</noscript>
<table>
<tr>
<th colspan=10 rowspan=1><h1>TITLE</h1></th>
</tr>
<tbody>
<tr rowspan=2><td colspan=10> </td></tr>
<tr rowspan=10>
<td colspan=10>
<div class="codegena_iframe">
<iframe src="about:blank" height="300" width="500" style="border:0px;float:middle;" id="main"></iframe>
</div>
</td>
</tr>
</tbody>
</table>
<font size="30"><div id="test"></div></font>
</body>
</html>
这是我的 html 元素:
<iframe src="about:blank" height="300" width="500" style="border:0px;float:middle;" id="main"></iframe>
这是我的 JavaScript:
iframe = document.getElementById("main");
function start() {
iframe.addEventListener("load", function() {
alert("foo");
});
}
请帮忙,我不知道该怎么办。 谢谢
【问题讨论】:
-
取决于脚本何时运行,在 iframe 元素出现在文档中之前还是之后
-
改用
document.getElementById("main").addEventListener("load", function() { -
仅供参考,在加载正文时调用 start() 函数。
-
您能否发布运行
start的代码,以便我们了解更多上下文? -
使
iframe = document.getElementById("main");的第一行start()被设置为脚本加载,而不是页面加载。
标签: javascript html dom iframe