【问题标题】:getElementById in Firefox iframe returns null but works in Safari/ChromeFirefox iframe 中的 getElementById 返回 null 但适用于 Safari/Chrome
【发布时间】:2011-01-22 17:16:40
【问题描述】:

我有两个 html 文件。一个在 iframe 中包含另一个。 iframe 对先前创建的元素执行 getElementById。这在 Chrome/Safari 中运行良好,但在 Firefox/IE8 中却不行,我不明白为什么。

Firefox 返回:null

Safari 返回:[object HTMLDivElement]

index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>untitled</title>
</head>
<body>
    <iframe src="comment.html"></iframe>
</body>
</html>

comment.html

<div id="foobar"></div>
<script type="text/javascript">
    alert(document.getElementById('foobar'));
</script>

【问题讨论】:

  • 直接打开comment.HTML会发生什么?
  • 嗯,同样的错误出现了。所以我想这不是一个真正与 iframe 相关的问题。

标签: javascript iframe cross-browser getelementbyid


【解决方案1】:

您的评论 html 文件格式不正确。尝试使用:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>untitled</title>
</head>
<body>
<div id="foobar"></div>
<script type="text/javascript">
    alert(document.getElementById('foobar'));
</script>

</body>
</html>

【讨论】:

  • 这行得通。我完全忘记了 iframe 中加载的文档必须是正确的 HTML 文档(带有 doctype 等)。谢谢!
猜你喜欢
  • 2017-11-25
  • 2013-06-30
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多