2

我继承了一些 javascript 代码,它直接iframe通过它的名称访问,没有任何getElementById()或任何东西。我找不到任何迹象表明这实际上是合法的,但它似乎适用于我尝试过的浏览器(Chrome、Firefox、IE10、Windows 版 Safari)。

简单的测试用例:

<iframe name="iFrameName" id="iFrameId" src="test2.html"></iframe>
<button onclick="iFrameName.myFunction();">click me</button>

iframe 的 test2.html src 包含:

<script type="text/javascript">
    function myFunction()
    {
        alert("OH HAI!");
    }
</script>

单击按钮效果很好 - 弹出警报“OH HAI”。

这是如何运作的?它应该工作吗?依靠还是应该使用getElementById()来检索 iframe 是否安全?

4

1 回答 1

2

这是如何运作的?它应该工作吗?

是的,曾经有一段时间元素只能通过名称访问,大多数(全部?)浏览器仍然支持它。请参阅有关它的 QuirksMode 页面,它是多年前编写的,但仍然适用。

依靠还是应该使用getElementById()来检索 iframe 是否安全?

您应该使用document.getElementById()和其他现代方法。如果你依赖名字,你的代码很快就会变得一团糟。

于 2013-07-09T04:23:22.647 回答