9

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

默认.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>

自动关闭.html

<html>
<head>
<script type="text/javascript">
    window.close();
</script>
</head>
<body></body>
</html>

我的应用程序应该支持 IE、Firefox 和 Chrome,并且我的代码在 IE 和 Chrome 上运行良好,但由于“脚本可能无法关闭不是由脚本打开的窗口”警告,它无法关闭 Firefox 上的第一个窗口。在 Firefox 上,它会打开 AutoClose.html,但window.close()在此页面中调用只会导致“脚本可能无法关闭不是由脚本打开的窗口”警告并且窗口没有关闭。顺便说一句,我的应用程序窗口打开时没有任何问题(没问题)。

似乎使用window.open()with_self参数技巧不适用于 Firefox。因为我的目标是在没有菜单栏、地址栏等的窗口中运行应用程序。

  1. 有什么方法可以隐藏地址栏、菜单栏而不使用window.open()(至少对于 Firefox)?那我就不需要跑了window.close()
  2. 是否有任何设置可以抑制 Firefox 上的“脚本可能无法关闭不是由脚本打开的窗口”警告?“允许脚本关闭不是由脚本打开的窗口”设置会很棒(:
  3. 有什么方法可以window.close()在 Firefox 上为“使用 javascript 脚本未打开的窗口”工作?
  4. 或者,是否有任何其他建议(:

提前致谢。

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

4

4 回答 4

11

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

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

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

它可能是用户打开的唯一窗口——在这种情况下,您只是关闭了他们的浏览器。可能是他们想反击,关闭标签会惹恼他们。

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

于 2012-09-07T08:54:05.393 回答
6

简单地,

open(location, '_self').close();
于 2014-06-20T05:59:25.887 回答
1

基本问题是您的需求制定者希望您做的事情被 Firefox 明确阻止:

  1. 无法在用户现有的浏览器窗口中隐藏 UI,因为它对用户不利,并且是钓鱼者最喜欢的工具。
  2. 无法从脚本中关闭用户的现有窗口,从而在此过程中丢失所有用户的会话历史记录。

基本上,用户在浏览器中还有其他东西,而不仅仅是你的银行东西。因此,假设其他情况或多或少注定要失败。

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

于 2012-09-07T12:18:35.203 回答
1

这对我有用。

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

open(location, '_self').close();
于 2014-07-15T03:12:45.377 回答