如何在Mozilla Firefox 3上使用Javascript关闭窗口?

时间:2009-04-17 13:31:21

标签: javascript firefox

我需要关闭显示我的网页的标签,只需点击一下按钮即可。但是只要没有通过javascript打开,firefox就不允许通过javascript关闭窗口。 如果我将dom.allow_scripts_to_close_windows的值设置为“true”,那么即使是正常window.close()也可以。但这不是一个好的解决方案。 :(

我在其中一个论坛中尝试了以下解决方法:

<script language="javascript" type="text/javascript">
function closeWindow() {
   window.open('','_parent','');
   window.close();
}
</script> 

它应该欺骗浏览器以为它实际上是由javascript打开的,但这在Firefox 3中不起作用。

任何人都可以建议一个解决方法吗?

7 个答案:

答案 0 :(得分:10)

function closeWindow() {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
    alert("This will close the window");
    window.open('','_self');
    window.close();
}

closeWindow();

答案 1 :(得分:7)

出于安全原因,您的脚本无法关闭它未打开的窗口/选项卡。

解决方案是在导航历史记录的较早点显示年龄提示。然后,您可以根据他们的输入选择允许他们进入您的网站。

您可以简单地说“抱歉”,或者将用户重定向到他们的主页,而不是关闭显示提示的页面。

答案 2 :(得分:6)

此代码适用于IE 7和最新版本的Mozilla,尽管mozilla中的默认设置不允许通过javascript关闭窗口。

以下是代码:

功能F11()    {      window.open( '', '_父', '');      window.open(“login.aspx”,“”,“channelmode”);      window.close()的;    }

更改默认设置:

1.在firefox地址栏中输入“about:config”并输入;

2.确保您的“dom.allow_scripts_to_close_windows”为真

答案 3 :(得分:2)

self.close()不起作用,您确定关闭窗口而不是脚本生成弹出窗口吗?

你们可能想看看这个:https://bugzilla.mozilla.org/show_bug.cgi?id=183697

答案 4 :(得分:1)

从用户体验的角度来看,您不希望被动地执行主要操作。

像窗口关闭这样的主要事物应该是用户操作的结果。

答案 5 :(得分:1)

如果浏览器人员将此视为安全性和/或可用性问题,那么您的问题的答案就是不要关闭窗口,因为根据定义,他们会为您的解决方法提供解决方案。关于为什么选择在firefox错误数据库https://bugzilla.mozilla.org/show_bug.cgi?id=190515#c70

中的原因有一个很好的总结。

那你能做什么?

更改您网站的规格,以便为这些人提供解决方案。例如,您可以将其视为将其指向合作伙伴的机会。

也就是说,将其视为(可能)需要它的其他人的传递。例如,Hanselman最近有一篇关于在其他类似情况下该怎么做的文章,即404错误:http://www.hanselman.com/blog/PutMissingKidsOnYour404PageEntirelyClientSideSolutionWithYQLJQueryAndMSAjax.aspx

答案 6 :(得分:1)

这段代码肯定会解决这个问题

function closing() {
var answer = confirm("Do you wnat to close this window ?");
    if (answer){
        netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserWrite');
        window.close();
    }
    else{
        stop;
    }
}