【发布时间】:2015-11-13 00:44:07
【问题描述】:
我有一个带有 javascript 变量和定义的函数的窗口:
// in window 1:
<SCRIPT>
var someVariable = "hello, world";
function myFunc(msg) {
alert(msg);
}
</SCRIPT>
我从第一个窗口中的链接打开第二个窗口,并获取对打开器的引用:
// in window 2:
var windowOpener = window.opener;
第二个窗口打开第三个窗口,其中包含以下脚本:
// in window 3:
alert(window.parent.windowOpener.someVariable);
上面的行正确打印了“hello, world”。但是,然后我尝试在窗口 1 上执行该函数,因此:
// in window 3:
window.parent.windowOpener.myFunc("hi, world");
这会引发以下异常:
“无法设置未定义或空引用的属性‘URL’”
我的环境是 javascript、Velocity 和 Struts,所以这些窗口不是通过“window.open”调用打开的,而是通过调用转发到 vm 文件的操作类来打开的。我的猜测是这与它有关,但为什么变量引用会起作用但函数调用不起作用?
【问题讨论】:
-
你没有在你提供的代码中设置
URL,所以你在最后一段的猜测是正确的。 -
谢谢。奇怪的是我根本没有在任何地方设置 URL。您所看到的只是纯 javascript —— 在这部分代码中它根本没有利用速度或 struts。似乎是底层的 js 脚本引擎(兼容模式下的 IE 11)在做某事。我无法在任何地方找到此行为的参考。
-
而“if (window.parent.windowOpener.myFunc)”计算结果为真!
标签: javascript