gpt4 book ai didi

javascript - 谷歌浏览器扩展 : create a window only once

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:49:58 26 4
gpt4 key购买 nike

我正在通过单击搜索栏附近的扩展按钮打开一个新窗口。我只想在尚未打开的情况下打开一个新窗口;在那种情况下,我宁愿展示旧的。

这是我的代码,但它不起作用。

  var v = null;
var vid = null;
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.windows.getAll({}, function(list) {
// check if already exists
for(window in window_list)
if(window.id == vid) { window.focus(); return; }

chrome.windows.getCurrent(function(w) {
v = chrome.windows.create({'url': 'my_url', 'type': 'panel', 'focused': true});
vid = w.id;
});
});
});

谁能告诉我如何修复它?

最有可能的是,vvid 值在关闭应用程序后(完成脚本执行后)都被删除了,但我该如何修复它?如果可能,不使用 localStorage 或 cookie。

我尝试在创建窗口时指定 tabId 属性,但它不起作用。我也尝试过使用 chrome.windows.onRemoved.addListener 功能,但它也不起作用。

最佳答案

  1. window 更改为另一个 变量名。
  2. 变量名保持一致。 window_listlist 是不同的东西。
  3. 使用chrome.windows.update而不是 window.focus(),因为后者不起作用。
  4. 使用chrome.windows.get查看窗口是否存在,而不是维护一个窗口列表。
  5. 新窗口的详细信息可在chrome.windows.create的回调中获得.正确使用此方法:

代码:

chrome.windows.get(vid, function(chromeWindow) {
if (!chrome.runtime.lastError && chromeWindow) {
chrome.windows.update(vid, {focused: true});
return;
}
chrome.windows.create(
{'url': 'my_url', 'type': 'panel', 'focused': true},
function(chromeWindow) {
vid = chromeWindow.id;
}
);
});

或者,不检查窗口是否存在,只是更新窗口,当发生错误时,打开一个新窗口:

chrome.windows.update(vid, {focused: true}, function() {
if (chrome.runtime.lastError) {
chrome.windows.create(
{'url': 'my_url', 'type': 'panel', 'focused': true},
function(chromeWindow) {
vid = chromeWindow.id;
});
}
});

关于javascript - 谷歌浏览器扩展 : create a window only once,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9686356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com