jQuery没有关闭窗口

时间:2011-03-01 01:26:09

标签: jquery window

我正在为电子商务网站制作表单,以便用户请求有关商品的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

3 个答案:

答案 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);
});

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