【问题标题】:Google Chrome closes when I open a new tab using my browser action Javascript, no idea why当我使用浏览器操作 Javascript 打开新标签时,谷歌浏览器关闭,不知道为什么
【发布时间】:2014-01-31 06:49:45
【问题描述】:

我正在编写一个谷歌浏览器扩展程序,我正在忙于一项应该是非常简单的任务。我有一个浏览器操作,它打开一个弹出窗口“popup.html”,然后加载一个小的 Javascript 文件“popup.js”。一旦我从弹出页面获得 DOMContentLoaded 信号,我的 Javascript 就会打开一个带有特定 URL 的新选项卡。这种行为怪癖是设计使然 - 在某些情况下它会显示一个菜单,而在其他情况下它只会打开这个 URL。

我目前有一些非常简单的代码应该可以做到这一点,但是每当它打开这个标签时,Chrome 就会突然关闭。我使用的是 Mac(OS X Mavericks),所以它不会完全崩溃(仍在运行),窗口只是关闭。当我再次打开它时,它应该打开的选项卡在那里,但是“popup.html”菜单仍然笨拙地挂在 UI 上并且不会消失。

这是我完整的 popup.js 文件:

function stuff() {
    window.open("http://stackoverflow.com/");
}

document.addEventListener('DOMContentLoaded', stuff);

我猜我可能需要在访问此链接或其他内容之前优雅地关闭我的弹出窗口,但这似乎是我想多了。毕竟,我已经看到其他在浏览器操作弹出窗口中有正常链接的扩展程序,您可以单击这些扩展程序打开新标签,而无需任何 Javascript 魔法。

我也尝试过使用chrome.tabs.create 函数,但同样的事情发生了。 Chrome 开发者控制台没有显示任何错误。想法?

Edit1:刚刚禁用所有扩展并重试。还在破。准备启动我的 Windows 8 机器,看看它会发生什么。

Edit2:现在在 Mac 上打开窗口之前有短暂的延迟,请参阅下面的答案。

【问题讨论】:

  • 这听起来像是弹出窗口阻止程序会停止...虽然我不知道为什么它会以这种特殊方式中断。

标签: javascript jquery google-chrome-extension


【解决方案1】:

好的,我想我可能已经想通了,但这仍然很奇怪。我在我的 Windows 8 PC 上执行此操作,浏览器没有崩溃,但浏览器操作弹出窗口也没有按照预期的方式关闭。

凭直觉,我修改了 Mac 上的代码,让浏览器有时间呈现弹出窗口:

function stuff() {
    window.open("http://stackoverflow.com/");
}

setTimeout(stuff, 500);

这次在 Mac 上运行没有问题。我猜这是渲染弹出窗口时浏览器被中断的问题,但这仍然很奇怪。我仍然会感谢真正知道这里发生了什么的人的解释! :-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-21
    • 2013-08-05
    • 2016-08-15
    • 2013-12-29
    • 2014-07-26
    • 1970-01-01
    • 2015-08-14
    • 2010-12-23
    相关资源
    最近更新 更多