我有一个在页面上运行的.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中访问该信息?谢谢你们每一个人的帮助! :)
答案 0 :(得分:0)
从IFrame内部,parent属性引用父级,因此:
parent.document.getElementByID('myInputBox').value;
将访问位于此文档的父级中的ID为“myInputBox”的元素的内容。如果脚本是从框架对象外部的顶级文档执行的,则属性parent = self。请注意,ID属性在单个HTML文档中必须是唯一的,因此函数是getElementByID()而不是getElementsByID()。此外,不需要索引,因为只返回一个元素。