通过名称获取IFRAME元素不再工作

Get an IFRAME element by name does not work anymore?

本文关键字:元素 不再 工作 IFRAME 获取      更新时间:2023-09-26

我有一个很老的JS在IE8中工作,它是这样做的:

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元素?

New EDIT:旧代码可以正常工作,因为旧版本的internet explorer可能存在一些错误(或故意的)

注意在ie浏览器中使用getElementById时id和name属性混淆

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

第一个给定答案:

您正在抓取id,但您没有在iframe元素中设置id

window.document.getElementById("frameModalityList")

更改名称属性为id iframe

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

因为你还没有设置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")