Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.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 - Fatal编程技术网

Javascript 为什么window.close()突然不工作了?

Javascript 为什么window.close()突然不工作了?,javascript,Javascript,我的应用程序通过新浏览器选项卡中的图标或链接打开新的PHP。几个月来,我一直在使用一个简单的JavaScript函数来关闭当前的浏览器选项卡 突然,在过去的几天里,只有当窗口第一次打开时,关闭链接才起作用。当你在页面上做一些事情时(点击链接,按下提交按钮),它就不起作用了。我不知道这是什么问题。代码中没有任何更改 HTML href语句是: <a href="javascript:windowClose()"><span>Close</span&

我的应用程序通过新浏览器选项卡中的图标或链接打开新的PHP。几个月来,我一直在使用一个简单的JavaScript函数来关闭当前的浏览器选项卡

突然,在过去的几天里,只有当窗口第一次打开时,关闭链接才起作用。当你在页面上做一些事情时(点击链接,按下提交按钮),它就不起作用了。我不知道这是什么问题。代码中没有任何更改

HTML href语句是:

<a href="javascript:windowClose()"><span>Close</span></a> 
在Windows10平台上,Edge和Chrome都会出现这种情况

这可能是由于对O/S、Chrome或Edge应用程序的某些更新造成的吗?

根据MDN,“脚本无法关闭窗口,因为它们尚未打开”

如果选项卡已由您打开(您键入url并手动按enter键),则无法使用Javascript关闭窗口。但是,例如,如果您使用npm start启动项目(在我的例子中是React),则可以使用您提供的代码关闭页面。虽然当你试图通过手动打开网页并关闭标签来重新操作时,你会失败

总之,不要试图关闭js未打开的窗口


参考资料:

我想补充一点,为用户关闭窗口很少有好的用户体验。处理机密信息的大型网站会发出警报,告诉您最好关闭窗口/浏览器以阻止存储会话,而不是尝试为您这样做,这是有原因的。作为9/10的用户,这是一种不自然/不愉快的体验。感谢您的快速回复。因此,如果用户单击php生成的网页上的链接(或按钮),并且href使用target=“\u blank”将新的php程序加载到另一个浏览器选项卡中,用户如何关闭该窗口/选项卡?他们会按标签上的“X”吗?我使用了指向window.close()的链接,因为它看起来更优雅。。。。。还有其他方法吗?你可以这样做(如果我理解正确,请告诉我:)。下面是方法:看起来你的“父”页面打开了一个子窗口,其中加载了www.google.com。然后从父窗口关闭子窗口。我想通过加载的应用程序关闭子窗口(在您的示例中:Google)。我想我找到了一个解决方案。我已经更改了“parent”程序,因此我不再简单地使用带有targetr=“\u blank”的href,而是将URL传递到执行window.Open的javascript函数中。这样,窗口的打开和关闭都由Java脚本控制。到目前为止,一切顺利。谢谢大家的帮助!可能重复:是否可以编辑代码,使其位于社区可以帮助诊断的可运行代码段中?按钮`onclick=“window.close()”处理程序是否有效(代码似乎过于复杂)?此外,“获取链接”是指页面内链接还是页面外链接,以及在表单提交期间关闭页面的用例是什么?
function windowClose() {
    window.open('','_parent','');
    window.close();
}