Chrome扩展程序在当前窗口后面打开新窗口

时间:2013-12-05 12:15:40

标签: google-chrome google-chrome-extension

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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属性应该在一个步骤中获得相同的结果,但是对于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 });
    });
});

答案 1 :(得分:0)

chrome.windows.getCurrent(function(winCurrent){
        chrome.windows.create({url:url, function(win){
            chrome.windows.update(winCurrent.id, {focused: true});
        });
    });

尝试这个,它的速度快,所以观众感觉不太多