有人问过如何在iframe中访问全局变量。我想知道如何在父级的iframe范围内声明和初始化全局变量。我知道我可以使用document.myGlobalVariable
从iframe访问变量,但我希望只能通过说myGlobalVariable
,前面没有document.
来引用它。< / p>
这是我的HTML:
<html>
<head>...</head>
<body>
...
<iframe src="myFrame.html"></iframe>
<script type="text/javascript">
var iframe = document.querySelector('iframe');
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
iframeDocument.myGlobalVariable = "Hello";
</script>
</body>
</html>
myFrame.html
<html>
<body>
...
<script type="text/javascript">
// wait for document to load so parent script can finish running
$(function() {
console.log(document.myGlobalVariable); // <-- This works
console.log(myGlobalVariable); // <-- But this doesn't (and I want this one)
});
</script>
</body>
</html>
谢谢!
答案 0 :(得分:2)
你有3个问题。
document
上设置了该属性,但正尝试从window
所以:
<html>
<head>...</head>
<body>
...
<iframe src="myFrame.html"></iframe>
<script type="text/javascript">
var iframe = document.querySelector('iframe');
iframe.addEventListener("load", function () {
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
iframeDocument.myGlobalVariable = "Hello";
});
</script>
</body>
</html>
和
<html>
<body>
...
<script type="text/javascript">
setInterval(function () {
console.log(document.myGlobalVariable);
}, 1000);
</script>
</body>
</html>
答案 1 :(得分:0)
回答我自己的问题:
我试图将变量添加到文档范围,如下所示:
document.myGlobalVariable
但是将它添加到文档范围意味着,为了从iframe的JS中引用变量,您必须将myGlobalVariable
附加到变量的前面:iframe.contentWindow.myGlobalVariable = "Hello";
。
但正如我的问题所述,我希望能够仅通过变量名称来引用它:try {
Assert.assertNotEquals(actualValue, expectedValue);
} catch (Exception e) {
// Thread the excpetion here
}
。
为此,您只需将其添加到窗口范围,而不是:
self.polygon