jQuery没有关闭窗口

我正在为电子商务网站制作表单,以便用户请求有关商品的PDF。 表单工作正常,并将用户发送到“谢谢”页面。 在感谢页面上,我让jQuery在5秒后设置了关闭窗口的间隔。 但它不起作用,也没有在一个链接中嵌入close命令。 但是,如果“谢谢”页面在新选项卡中打开,则间隔将起作用。

这是php文件中的代码(在表单成功提交后调用)。

/* Results rendered as HTML */ $theResults = <<<EOD     Thanks   $(document).ready(function() { //wait a few seconds and close the window setInterval(function() { window.close(); }, 5000); });   body{ background-color: transparent; margin: auto auto auto auto; border: none; } #general-copy{ background-color: transparent; margin: -5px auto auto 0px; position: absolute; width: 300px; height: 350px; padding: 0px 15px 15px 15px; font-family: Georgia, "Times New Roman", Times, serif; font-size: 14px; font-style: normal; font-variant:normal; font-weight:100; text-align: justify; z-index: 3; }   

Thank you for your request.
We will email you a pdf all about $item2Field.

This window should close itself in 5 seconds.
If it doesn't please click here to return to the site.

EOD; echo "$theResults"; ?>

如果你希望看到这个现场直播,你可以在这里试试。

window.close @ MDN(Mozilla docs)

仅允许对使用window.open方法由脚本打开的窗口调用此方法。 如果脚本未打开窗口,则JavaScript控制台中将显示以下错误:脚本可能无法关闭脚本未打开的窗口。

HTML5上的 W3C 规范同意:

如果相应的浏览上下文A是由脚本创建的辅助浏览上下文(而不是用户的操作),则Window对象上的close()方法应该是,并且如果调用的脚本的浏览上下文是允许方法导航浏览上下文A,关闭浏览上下文A(也可以丢弃它)。

尝试获取对您窗口的引用。 如果你使用window.open(),试试这个:

 var wind = window.open(params);// then close.. wind.close(); 

我在Google Chrome中尝试了您的代码并且正在运行。

   

我已经读过在IE中也可以使用。 但是,也许您正在使用FireFox来测试您的页面,这就是为什么不起作用的原因。 您可以搜索针对FireFox的解决方案。

更新 :我测试了另一个有效的解决方案 。 但是,它需要更高的权限:

 $(document).ready(function() { function closeWindow() { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite"); alert("This will close the window"); window.open('','_self'); window.close(); } //wait a few seconds and close the window setInterval(function() { window.close(); closeWindow(); }, 5000); }); 

结果是一条警告消息,询问用户特权级别。 可能不是最好的方式。 也许,您可以将用户重定向到相关的内容,而不是关闭窗口。