javascript 是否有任何选项可用于修复 chrome 扩展总是在另一个窗口的顶部

7ajki6be  于 2023-02-11  发布在  Java
关注(0)|答案(2)|浏览(124)

目前我正在开发谷歌浏览器扩展。问题是当我点击扩展之外,它会到另一个窗口后面。但要求是我总是想显示窗口,即使点击外部。
我尝试使用下面的代码

chrome.action.onClicked.addListener(async () => {
    let url = chrome.runtime.getURL("index.html");
    chrome.windows.create({
       url,
       type: "panel",
       height: 650,
       width: 520,
       focused: true,
       left: 1000,
       top: 100
    });
    chrome.windows.getCurrent(data => {
        chrome.windows.onFocusChanged.addListener(wId => {
            if (data.id != wId)
                chrome.windows.update(data.id, {'focused': true})  
        })
    })
});

它创建新窗口,但它不是固定的。我希望窗口总是在另一个窗口的顶部(浮动)

6jjcrrmo

6jjcrrmo1#

保存你打开的窗口的id并且尝试下面的代码:

chrome.windows.onFocusChanged.addListener(wId => {
    if (<ext_window_id> != wId)
        chrome.windows.update(<ext_window_id>, {'focused': true})
})
0g0grzrc

0g0grzrc2#

不应将onFocusChanged侦听器放入回调函数中。
这样,每次单击操作时都可以克隆侦听器。
此外,当软件在进入休眠状态后唤醒时,它不会“看到”侦听器。

var wId;
chrome.storage.session.get('wId', itm => {
    wId = itm.wId
});
chrome.action.onClicked.addListener(t => {
    var url = chrome.runtime.getURL("index.html");
    chrome.windows.create({
        url,
        type: "panel",
        left:1000, top:100,
        height:650, width: 400,
        focused: true
    }, x =>
        chrome.storage.session.set({'wId': x.id}, _ => {
            wId = x.id
        })
    )
});
chrome.windows.onFocusChanged.addListener(fcwId => {
    if (typeof wId === 'undefined')
        return;
    if (wId != fcwId)
        chrome.windows.update(wId, {'focused': true}, w => {
            if (chrome.runtime.lastError)
                console.warn(chrome.runtime.lastError)
        })
})

相关问题