从同一域上的iframe中的.js内访问父页面的输入字段

时间:2011-10-15 03:08:39

标签: javascript iframe var

我有一个在页面上运行的.js文件,并与已存在的数据进行交互。该.js文件创建一个iframe,它加载另一个也安装了.js文件的页面(都使用GreaseMonkey)。我正在尝试使在iframe中运行的.js文件从父页面中获取var。两者都在同一个域上,但它不会访问数据。这就是我所拥有的:

JS1:

var myvar1 = document.getElementsByName('nameofinputfromparentpage')[0].value;

JS2:

var myvar2 = parent.document.getElementsByID('page1').getElementsByName('nameofinputfromparentpage')[0].value;

var myvar2 = myvar1 (or parent.myvar1 or window.myvar1 or a dozen other variances...)

我尝试将var从js1推送到js2,例如: window.frames[iframeName].variableName或使用contentDocument / contentWindow。 我似乎无法使语法正确使其实际拉动数据...

所以...父页面的页面源有一个输入框,如何在父页面上另一个.js的iframe中运行的.js中访问该信息?谢谢你们每一个人的帮助! :)

1 个答案:

答案 0 :(得分:0)

从IFrame内部,parent属性引用父级,因此:

parent.document.getElementByID('myInputBox').value;

将访问位于此文档的父级中的ID为“myInputBox”的元素的内容。如果脚本是从框架对象外部的顶级文档执行的,则属性parent = self。请注意,ID属性在单个HTML文档中必须是唯一的,因此函数是getElementByID()而不是getElementsByID()。此外,不需要索引,因为只返回一个元素。