Javascript 谷歌浏览器扩展:只创建一次窗口
我通过点击搜索栏附近的扩展按钮打开一个新窗口。 我只想打开一个尚未打开的新窗口;那样的话,我宁愿展示旧的 这是我的代码,但它不起作用Javascript 谷歌浏览器扩展:只创建一次窗口,javascript,google-chrome,google-chrome-extension,google-chrome-devtools,Javascript,Google Chrome,Google Chrome Extension,Google Chrome Devtools,我通过点击搜索栏附近的扩展按钮打开一个新窗口。 我只想打开一个尚未打开的新窗口;那样的话,我宁愿展示旧的 这是我的代码,但它不起作用 var v = null; var vid = null; chrome.browserAction.onClicked.addListener(function(tab) { chrome.windows.getAll({}, function(list) { // check if already exists fo
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;
});
});
});
有人能告诉我怎么修吗
最有可能的是,在关闭应用程序(在它完成执行脚本之后)后,v
和vid
值都会被删除,但是我如何修复它呢?如果可能,不使用本地存储或cookie
我尝试在创建窗口时指定tabId
属性,但它不起作用。
我也尝试过使用chrome.windows.onRemoved.addListener的
将窗口
更改为另一个变量名
变量名要一致<代码>窗口列表
和列表
是不同的东西
window.focus()
,因为后者不起作用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;
});
}
});
这是一个对我有用的替代代码@auino您的整个代码都被破坏了,我更新了我的答案,并扩展了“//代码的其余部分”嘿。我有一只虫子在里面。使用简单for循环代替for(in)。它有时以索引号作为id。对于(j=0;jc)您能更好地解释这个修复吗?最好解释一下您的代码,它与“错误”有什么不同问题中的代码。仅仅几个注释可能是不够的。特别是因为已经有了一个非常相似的公认答案-你的答案有什么不同,为什么/什么时候更好?但是,我不同意否决票-这并不是没有用的。实际上,我可能会重新考虑。除非设置了一个特定的实验标志,否则我认为windows不会打开这样可以保留类型
“面板”
。
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;
});
}
});
chrome.windows.getAll({}, function(window_list) {
var extWindow = '';
window_list.forEach(function(chromeWindow) {
//Check windows by type
if (chromeWindow.type == 'panel') {
extWindow = chromeWindow.id;
//Update opened window
chrome.windows.update(extWindow, {focused: true});
return;
}
});
if (extWindow == '') {
//Open window
chrome.windows.create(
{
'url' : 'my_url',
'type' : 'panel',
'focused' : true
},
function(chromeWindow) {
extWindow = chromeWindow.id;
}
);
}
});