【发布时间】:2012-07-01 22:16:54
【问题描述】:
我正在编写一个 GreaseMonkey 脚本,该脚本修改具有特定 ID 的元素的属性,但由于非传统的 HTML 层次结构,我在访问它时遇到了一些问题。这是相关的 HTML:
<body>
...
<iframe id="iframeID">
<html>
...
<body id="bodyID" attribute="value">
...
</body>
...
</html>
</iframe>
...
</body>
attribute 是我尝试修改的属性。
起初,我没有意识到我正在使用iframe 和嵌套的body 标签,我尝试了这个:
document.getElementById('bodyID').setAttribute("attribute","value")
虽然这在 Firefox 中运行良好,但 Chrome 告诉我我无法设置 null 的属性,这表明它找不到任何 ID 为 bodyID 的元素。如何以跨浏览器友好的方式修改此属性?
【问题讨论】:
-
你试过
window.frames吗? (文档:developer.mozilla.org/en/DOM/window.frames) -
@drderp 虽然我认为这可行,但与 gdoron 的解决方案相比,代码会包含不必要的混乱。
-
gdoron 在我发布我的解决方案后立即发布了他的解决方案;我同意你的看法。
-
查看我对
<body>的更新 + 演示。
标签: javascript html dom iframe cross-browser