Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法设置属性';URL';指未定义的或空的引用_Javascript - Fatal编程技术网

Javascript 无法设置属性';URL';指未定义的或空的引用

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); 上面这一行正确地打

我有一个带有javascript变量和定义的函数的窗口:

// 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>