我正在为电子商务网站制作表单,以便用户请求有关商品的PDF。 表单工作正常,并将用户发送到“谢谢”页面。 在感谢页面上,我让jQuery在5秒后设置了关闭窗口的间隔。 但它不起作用,也没有在一个链接中嵌入close命令。 但是,如果“谢谢”页面在新选项卡中打开,则间隔将起作用。
这是php文件中的代码(在表单成功提交后调用)。
/* Results rendered as HTML */
$theResults = <<<EOD
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Thanks</title>
<script type="text/javascript" src="css/00000001/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
//wait a few seconds and close the window
setInterval(function()
{
window.close();
}, 5000);
});
</script>
<style type="text/css">
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;
}
</style>
</head>
<body><br /><br />
<div class="lettertext">
Thank you for your request.<br />
We will email you a pdf all about $item2Field.
<br><br>
<p style="font-size: 10px;">This window should close itself in 5 seconds.<br>
If it doesn't please click <a href="javascript:window.close()">here</a> to return to the site.
</p>
</div>
</body>
</html>
EOD;
echo "$theResults";
?>
如果你想看到这个正在运行,你可以尝试here。
答案 0 :(得分:7)
window.close @ MDN(Mozilla docs)
此方法仅允许 要求打开的窗户 使用window.open方法的脚本。 如果窗口没有被打开 脚本,出现以下错误 JavaScript控制台:脚本可能 没有关闭没有打开的窗户 通过脚本。
W3C norm on HTML5同意:
Window对象的close()方法 应该,如果相应的浏览 上下文A是辅助浏览 由脚本创建的上下文 (而不是通过行动 用户),如果浏览上下文 调用该方法的脚本是 允许导航浏览 上下文A,关闭浏览上下文 A(也可以丢弃它)。
答案 1 :(得分:0)
尝试获取对您窗口的引用。如果你使用window.open(),试试这个:
var wind = window.open(params);// then close..
wind.close();
答案 2 :(得分:0)
我在Google Chrome中尝试了您的代码并且正在运行。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
$(document).ready(function()
{
//wait a few seconds and close the window
setInterval(function()
{
window.close();
}, 5000);
});
</script>
我已经读过在IE中也可以使用。但是,也许您正在使用FireFox来测试您的页面,这就是为什么不起作用的原因。您可以search for找到针对FireFox的解决方案。
更新:我测试了另一个有效的solution。但是,它需要更高的权限:
$(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);
});
结果是一条警告消息,询问用户特权级别。可能不是最好的方式。也许,您可以将用户重定向到相关的内容,而不是关闭窗口。