使用javascript关闭脚本未打开的窗口

时间:2012-09-07 08:48:06

标签: javascript firefox

我希望我的Web应用程序在没有菜单栏,地址栏等的窗口中运行。我有一个Default.html页面,在此页面中我单击“运行应用程序”按钮,首先使用{在另一个窗口中打开我的应用程序{1}}然后使用带有window.open参数的window.open打开“AutoClose.html”来关闭当前窗口

default.html中

_self

AutoClose.html

<html>
<head>
<script type="text/javascript">
    function runApp() {
        // Open my application
        window.open('Application.html', null, 'status:no;dialogHide:true;help:no;scroll:yes;center=yes;');

        // Close this window
        window.open('AutoClose.html', '_self');
    }
</script>
</head>
<body>
    <input type="button" value="Run Application" onclick="runApp();" />
</body>
</html>

我的应用程序应支持IE,Firefox和Chrome,我的代码在IE和Chrome上运行良好,但由于“脚本可能无法关闭脚本未打开的窗口”警告,因此无法关闭Firefox上的第一个窗口。在Firefox上,它打开AutoClose.html,但此页面中的<html> <head> <script type="text/javascript"> window.close(); </script> </head> <body></body> </html> 调用只会导致“脚本可能无法关闭脚本未打开的窗口”警告并且窗口未关闭。顺便说一下,我的应用程序窗口打开没有任何问题(没问题)。

似乎将window.close()window.open()参数技巧一起使用对Firefox不起作用。因为我的目标是在没有菜单栏,地址栏等的窗口中运行应用程序。

  1. 有没有办法隐藏地址栏,菜单栏没有使用_self(至少对于Firefox)?然后我不需要运行window.open()
  2. 在Firefox上是否有任何设置可以禁止“脚本可能无法关闭脚本未打开的窗口”警告? “允许脚本关闭未通过脚本打开的窗口”设置将很棒(:
  3. 有没有办法让window.close()适用于“在Firefox上没有通过javascript打开的窗口”?
  4. 或者,还有其他建议(:
  5. 提前致谢。

    更新:这是一个银行应用程序,我只是一个开发人员而不是决策者。换句话说,某种分析师希望应用程序以这种方式工作。我不是在质疑它。所以“你要做的全部事情都是完全错误的”,答案不会真正有用。

4 个答案:

答案 0 :(得分:10)

你无法在firefox中关闭当前窗口,因为你没有打开它。将AutoClose.html加载到其中并不重要。

但是这与windows的整个业务毫无意义。大多数人将其浏览器设置为在新选项卡中打开新窗口,并且您无法在选项卡窗口中阻止菜单栏等。

如果你因为我使用你的应用程序而关闭窗口,我个人会非常恼火。

它可能是用户打开的唯一窗口 - 在这种情况下,您只需关闭浏览器。可能是他们想要按回来,关闭标签会使他们烦恼。

来自firefox的这个错误是正确的,如果它在Chrome中有效,这是一个严重的错误,你应该报告它。

答案 1 :(得分:5)

简单地说,

open(location, '_self').close();

答案 2 :(得分:1)

基本问题是你的需求设置者要求你做的事情被Firefox明确阻止:

  1. 无法在用户现有的浏览器窗口中隐藏UI,因为它是用户恶意的并且是网络钓鱼者最喜欢的工具。
  2. 无法从脚本关闭用户的现有窗口,在此过程中丢失了所有用户的会话历史记录。
  3. 基本上,用户在浏览器中有其他东西而不仅仅是你的银行用品。因此,假设其他情况或多或少注定要失败。

    你有什么方法可以推翻不合理的要求吗?

答案 3 :(得分:1)

这对我有用。

我在jQuery UI对话框中单击按钮时用它来关闭窗口。

open(location, '_self').close();