如何使用 Javascript 访问 iframe 元素?

IT技术 javascript dom iframe
2021-01-23 03:39:42

我有一个网页,其中 iframe 中有一个 textarea。我需要从它的子页面 JavaScript 中读取这个 textarea 的值。目前通过window.parent.getelementbyID().value在 JavaScript 中使用,我能够获取父页面中除 iframe 中的 textarea 之外的所有控件的值。

我的父页面中的框架 ID 和框架名称在运行时会发生变化,因此我们不能使用框架 ID/框架名称作为参考。

2个回答

如果你有 HTML

<form name="formname" .... id="form-first">
    <iframe id="one" src="iframe2.html">
    </iframe>
</form>

和 JavaScript

function iframeRef( frameRef ) {
    return frameRef.contentWindow
        ? frameRef.contentWindow.document
        : frameRef.contentDocument
}

var inside = iframeRef( document.getElementById('one') )

inside现在是对文档的引用,因此您可以getElementsByTagName('textarea')随心所欲,具体取决于 iframe src 中的内容。

是的。getElementsByTagName('iframe') 来引用 nodeList 并使用 [0] 访问内部元素,假设您正在处理一个。或者你可以做一个循环。
2021-03-16 03:39:42
可以在@ xkr.us / articles/ dom / iframe-document找到解释。一些浏览器支持其中一个 dom 属性,我只检查其中一个。
2021-03-27 03:39:42
只有 1 个关注 Meder-- var inside = iframeRef( document.getElementById('one') ) 我页面中的 frameid n framename 在运行时发生变化,因此无法传递 frameid(如您所做的那样)。还有其他选择吗?
2021-04-03 03:39:42
你这个天才梅德。非常感谢您的即时帮助。
2021-04-05 03:39:42
谢谢梅德。还有 1 个查询-- 'frameRef.contentWindow.document' 和 'frameRef.contentDocument' 之间有什么区别我想了解这背后的概念。如果你解释一下,那对你真的很好。非常感谢你的帮助。
2021-04-08 03:39:42

使用 jQuery,您可以使用contents(). 例如:

var inside = $('#one').contents();
这里的一个重要考虑是,contents 方法可以“获取 iframe 的内容文档,如果 iframe 与主页在同一个域中”。
2021-03-11 03:39:42