问题是,当我调用window.close()或self.close()时,它不会关闭窗口。现在似乎有一个信念,在Chrome中,你不能通过脚本关闭任何不是脚本创建的窗口。这显然是错误的,但无论如何,它仍然应该这样做,即使它需要弹出一个警告来确认。这些都没有发生。
所以有没有人有真正的,功能性的和经过验证的方法关闭一个窗口,使用javascript:window.close()或javascript:self.close(),这实际上是什么是预期的,发生的事情只是在每个浏览器,不是基于Chrome ?任何建议都将非常感谢,我正在寻找Javascript特定的解决方案,没有JQuery或第三方实现。
更新:虽然大部分建议都有严重的局限性和可用性问题,但最新的建议(具体到TamperMonkey)使用// @grant窗口。在脚本头文件中使用Close,即使是在那些通常不能处理Close方法的选项卡上也可以。虽然不完全理想,也不适用于所有情况,但在我的情况下,这是一个很好的解决方案。
许多人仍在尝试使用javascript关闭Chrome浏览器。以下方法只适用于当你使用Chrome作为应用程序启动器- kiosk为例!
我测试了以下内容:
我正在使用以下扩展:关闭Kiosk
我正在遵循使用说明,它似乎工作得很好(确保在进行测试时清除缓存)。我使用的javascript是(附加到点击事件):
window.location.href = '/closekiosk';
我希望这能帮助到一些人,因为这是我找到的唯一有效的解决方案。
注意:似乎扩展运行在后台,并添加了一个Chrome托盘图标。它有以下选项选中:“让Chrome运行在后台”(或类似的文本)。你可能需要玩它,直到它为你工作。我检查它,现在它工作得很好!
Chrome修复了36.0.1985.125版本的安全问题
Chrome 36.0.1985.125 2014年7月16日星期三
发行通知
根据我的观察,这次更新修复了使用window.close()关闭弹出窗口的问题。当它失败时,你会在控制台中看到这一点,“脚本可能只关闭由它打开的窗口。”这意味着在最新版本中,布洛克·亚当斯(Brock Adams)的回答可能行不通。
因此,在之前的Chrome发布版本中,下面的代码块可能会工作,但不适用于此更新。
window.open('', '_self', '');
window.close();
对于此更新,您必须相应地更新代码以关闭弹出窗口。解决方案之一是获取弹出窗口id并使用
chrome.windows.remove(integer windowId, function callback)
方法将其删除。Chrome扩展窗口API可以在Chrome .windows中找到。
实际上,我的chrome扩展MarkView正面临这个问题,我不得不更新我的代码,使它为这个chrome更新工作。顺便说一下,MarkView是工具来读取和写入Awesome Markdown文件,它提供的功能包括内容大纲,可排序表和代码块语法突出显示与行号。
我也创建了这个帖子,欢迎任何评论。