-1

我有一个在 IE8 中工作的非常古老的 JS,它正在这样做:

window.document.getElementById("frameModalityList")

这是我要获取的内容:

<iframe name="frameModalityList" src="iframe_advanced_list.jsp" frameborder="0" marginheight="0" marginwidth="0" class="advanced_list" width="100%" height="300"></iframe>

现在,当我在 IE9/10、Chrome 中尝试它时,我收到一个错误:

SCRIPT5007:发生异常捕获:无法获取未定义或空引用的属性“contentWindow”

获取 IFRAME 元素的新正确方法是什么?

4

2 回答 2

2

新编辑:旧代码之所以有效,是因为旧版本的 Internet Explorer 中存在一些可能的错误(或预期的错误)。

Internet Explorer 中使用 getElementById 时注意 id 和 name 属性混淆

当使用 getElementById 通过 id 属性获取对元素的引用时,Windows 的 Internet Explorer(和某些版本的 Opera)也将匹配 name 属性包含相同值的元素。

首先给出的答案:

您正在获取,id但您没有设置idiniframe元素

window.document.getElementById("frameModalityList")

将 name 属性更改为 idiframe

<iframe id="frameModalityList" src="iframe_advanced_list.jsp" frameborder="0" marginheight="0" marginwidth="0" class="advanced_list" width="100%" height="300"></iframe>
于 2013-06-05T16:23:04.230 回答
1

因为你没有设置 id 但名称试试这个:

window.document.getElementByName("frameModalityList")

或将 id 插入到 html 中:

<iframe id="frameModalityList" name="frameModalityList" src="iframe_advanced_list.jsp" frameborder="0" marginheight="0" marginwidth="0" class="advanced_list" width="100%" height="300"></iframe>

window.document.getElementById("frameModalityList")
于 2013-06-05T16:21:29.910 回答