【发布时间】:2015-12-13 18:44:31
【问题描述】:
我正在尝试通过浏览器操作通过 Chrome 扩展程序打开一个窗口。
var wid = null;
chrome.windows.get(wid, function(chromeWin) {
chrome.windows.create({'url': 'https://google.com'}, function(chromeWin) {
wid = chromeWin.id;
}
);
});
为了防止窗口的多个副本,我正在尝试检查窗口 ID。但是如果第一次使用,可以理解的是,它会抛出错误,因为wid 是null。
错误:窗体 windows.get(null, function) 的调用与定义 windows.get(integer windowId, optional object getInfo, function callback)不匹配
我尝试使用 try..catch 块并在 catch 中处理“wid is null”的情况。
try {
var wid = null;
chrome.windows.get(wid, function(chromeWin) {
chrome.windows.create({'url': 'https://google.com'}, function(chromeWin) {
wid = chromeWin.id;
}
);
});
}
catch(error) {
chrome.windows.create({'url': 'https://google.com'}, function(chromeWin) {
wid = chromeWin.id;
}
);
}
但是try..catch 没有捕捉到“wid 是null”的情况。 我知道if 子句可能对我的实验有所帮助,但我想了解为什么try 会这样。
为什么try..catch 没有缓存错误,如何在 Chrome 中打开没有副本的窗口?
【问题讨论】:
-
1.您可以在调用函数 2 之前检查
null之前。您有两个变量wid和winId,因此代码不完整或者您有错字。 -
谢谢。这确实是错字。 if 子句有帮助,但它使代码变得复杂。 try and catch 似乎很简洁,但不知何故不适用于此代码清单。
-
您的代码中没有任何内容可以阻止重复出现。
-
好的,既然我读了你的问题,这实际上是有道理的。编辑以突出显示/修复错字,赞成并会回答。
标签: javascript google-chrome google-chrome-extension try-catch