Javascript 无法设置属性';URL';指未定义的或空的引用
我有一个带有javascript变量和定义的函数的窗口:Javascript 无法设置属性';URL';指未定义的或空的引用,javascript,Javascript,我有一个带有javascript变量和定义的函数的窗口: // in window 1: <SCRIPT> var someVariable = "hello, world"; function myFunc(msg) { alert(msg); } </SCRIPT> 第二个窗口打开第三个窗口,其中包含以下脚本: // in window 3: alert(window.parent.windowOpener.someVariable); 上面这一行正确地打
// in window 1:
<SCRIPT>
var someVariable = "hello, world";
function myFunc(msg) {
alert(msg);
}
</SCRIPT>
第二个窗口打开第三个窗口,其中包含以下脚本:
// in window 3:
alert(window.parent.windowOpener.someVariable);
上面这一行正确地打印出“你好,世界”。但是,我随后尝试在窗口1上执行该函数,因此:
// in window 3:
window.parent.windowOpener.myFunc("hi, world");
这将引发以下异常:
“无法设置未定义或空引用的属性“URL”
我的环境是javascript、Velocity和Struts,因此这些窗口不是通过“window.open”调用打开的,而是通过调用转发到vm文件的操作类打开的。我的猜测是这与此有关,但为什么变量引用有效,而函数调用无效?尝试将函数分配给变量,即
// in window 1:
<SCRIPT>
var someVariable = "hello, world";
var myFunc = function(msg) {
alert(msg);
}
</SCRIPT>
//在窗口1中:
var someVariable=“你好,世界”;
var myFunc=函数(msg){
警报(msg);
}
根据您提供的代码,很难说其他情况,因为您没有在其中的任何位置设置URL属性。。您的环境可能存在配置问题。您没有在提供的代码中设置
URL
,因此您在最后一段中的猜测是正确的。谢谢。奇怪的是,我根本没有在任何地方设置URL。您看到的只是纯javascript——在这部分代码中,它根本没有利用velocity或struts。似乎是底层js脚本引擎(兼容模式下的IE 11)在做一些事情。我在任何地方都找不到对此行为的引用,“if(window.parent.windowOpener.myFunc)”的计算结果为true!谢谢你的建议。。。但我还是得到了同样的例外。“window.parent.windowOpener”变量显然包含对打开的窗口的有效引用,但我无法执行函数——我只能访问变量。我猜您的vm文件配置有点奇怪,就像您在问题末尾所说的那样。。很难说没有看到更多的代码,因为您编写的代码似乎都不正确:\
// in window 1:
<SCRIPT>
var someVariable = "hello, world";
var myFunc = function(msg) {
alert(msg);
}
</SCRIPT>