【问题标题】:Chrome extension open new window behind the current windowChrome 扩展在当前窗口后面打开新窗口
【发布时间】:2013-12-05 12:15:39
【问题描述】:

我有一个 chrome 扩展程序,它使用自动打开一个窗口 窗口.打开(); 当用户打开一些特定的网站时。 我想要的是我通过 window.open() 从后台脚本打开的新窗口应该显示在用户打开的当前网站后面。

我尝试过 window.open 属性,例如 alwaysLowered=1、z-lock=1 等,但无法正常工作。 也试过.....

var w = window.open('url');
if(w){
w.blur();
window.focus();
}

所有这些对 chrome 都没有影响。有人可以帮忙吗?

【问题讨论】:

    标签: google-chrome google-chrome-extension


    【解决方案1】:

    如果不需要打开窗口的句柄(由window.open返回),可以使用chrome.windows API的方法createupdate

    background.js

    chrome.browserAction.onClicked.addListener(function(tab) {
        chrome.windows.create({ url: "http://www.google.com/" }, function(win) {
            chrome.windows.update(win.id, { focused: false });
        });
    });
    

    理论上,在 createInfo 参数中传递 focused: false 属性应该可以一步获得相同的结果,但它不适用于 Windows 上的 Chrome 版本 31.0.1650.57。


    更新:
    上面的代码似乎不会“模糊”Mac 上的窗口。为了克服这个问题(同时确定新窗口的位置和大小 - 根据 OP 的评论),请使用以下代码:

    chrome.browserAction.onClicked.addListener(function(tab) {
        chrome.windows.create({ 
            url: "http://www.google.com/",
            width:  430,
            height: 150,
            top:    top_popup,
            left:   left_popup
        }, function(win) {
            chrome.windows.update(tab.windowId, { focused: true });
        });
    });
    

    【讨论】:

    • 感谢您的回复。它适用于 windows chrome 版本 31.0.1650.63 m,但不适用于 mac chrome 版本 31.0.1650.63。
    • 有趣!您可以尝试聚焦原始窗口,而不是尝试模糊创建的窗口(但我没有可用于测试的 MAC)。例如。尝试将chrome.windows.update(win.id, { focused: false }); 更改为chrome.windows.update(tab.windowId, { focused: true });
    • 您是否尝试过我在上面的评论中提出的建议?成功了吗?
    • 是的,我试过了。它的工作。它实际上并没有将宽度和高度参数应用于弹出窗口,而是将其应用于另一个窗口。
    • 什么宽度和高度?
    【解决方案2】:
    chrome.windows.getCurrent(function(winCurrent){
            chrome.windows.create({url:url, function(win){
                chrome.windows.update(winCurrent.id, {focused: true});
            });
        });
    

    试试这个,它的速度很快,所以观众不会觉得太多

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 2013-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-29
      相关资源
      最近更新 更多