aui*_*ino 4 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
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;
});
});
});
Run Code Online (Sandbox Code Playgroud)
有人可以解释我如何解决它吗?
最有可能的是,在关闭应用程序后(在完成执行脚本之后)删除了值v
和vid
值,但是如何修复它?如果可能,不使用localStorage或cookies.
我已经尝试tabId
在创建窗口时指定属性,但它不起作用.我也尝试过使用这个chrome.windows.onRemoved.addListener
功能,但它也不起作用.
window
为另一个变量名称.window_list
并且list
是不同的事情.chrome.windows.update
而不是window.focus()
,因为后者不起作用.chrome.windows.get
看的,而不是维护窗口的列表中是否存在窗口.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;
}
);
});
Run Code Online (Sandbox Code Playgroud)
或者,不是检查窗口是否存在,只需更新窗口,当发生错误时,打开一个新窗口:
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;
});
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3496 次 |
最近记录: |