Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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 window.close在狩猎中引发旋转沙滩球_Javascript_Safari - Fatal编程技术网

Javascript window.close在狩猎中引发旋转沙滩球

Javascript window.close在狩猎中引发旋转沙滩球,javascript,safari,Javascript,Safari,我有一个带有按钮的页面,可以打开带有表单的子页面。子页面有一个取消按钮,该按钮本身不关闭window.close。但在窗户关上后,我得到了狩猎(12.02)旋转沙滩球。似乎在我做了其他事情后就消失了。Chrome和Firefox似乎没有问题。我试着看开发工具的时间轴,有一堆js动作在进行,但我不知道它是什么 尝试添加返回假;在窗口名称上胡闹,但似乎没有任何帮助。也使用slim框架,但不认为这是相关的。拥有jquery,但不在此操作上使用它 在父页面上: 函数openMiniAsset(id\u

我有一个带有按钮的页面,可以打开带有表单的子页面。子页面有一个取消按钮,该按钮本身不关闭window.close。但在窗户关上后,我得到了狩猎(12.02)旋转沙滩球。似乎在我做了其他事情后就消失了。Chrome和Firefox似乎没有问题。我试着看开发工具的时间轴,有一堆js动作在进行,但我不知道它是什么

尝试添加返回假;在窗口名称上胡闹,但似乎没有任何帮助。也使用slim框架,但不认为这是相关的。拥有jquery,但不在此操作上使用它

在父页面上:

函数openMiniAsset(id\u id){
var id=document.getElementById(id\u id).value;
//警报('id'+id+“参数:”+params);
var newin=window.open('/asset\u mini/'+id,'asset\u mini');
返回false;
}
...
打开
在子页面上:

取消

这显然是safari中的一个bug。最后我测试了两个简单的页面:一个页面上除了一个window.open按钮外没有其他内容,第二个页面上只有一个按钮window.close()。我仍然得到旋转沙滩球。感谢Barmar查看它。

将关闭窗口设置为异步过程可以避免此问题

    setTimeout(function() {
        window.open('about:blank', '_self').close();
    }, 100);
替换

onClick="self.close();return false;"


为我工作。

什么是
self
?我从window.close开始,然后尝试sel.close,但没有任何区别。有些脚本显然没有干净地完成。这看起来很简单,我看不出错误是什么。Self将是按钮对象,这没有意义。但是window.close也做同样的事情。窗口关闭,然后大约3秒钟后,beachbll开始旋转。JavaScript中没有标准的
self
变量,也许你的意思是
this.close()
?但正如你所说,
这个
是按钮,不是窗口。我刚刚试过这个,我得到了旋转的沙滩球,但Safari并没有真正挂起。如果我点击某个东西,它就会起作用,沙滩球就会消失。
    setTimeout(function() {
        window.open('about:blank', '_self').close();
    }, 100);
onClick="self.close();return false;"
onClick="setTimeout(self.close,100);return false;"