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