我需要在每个页面上检查request
的内容,并在数据正确时加载小部件。
问题很奇怪 - 我第二次重新加载页面时,widget被加载两次。
var widgets = require("widget");
var self = require("self");
var tabs = require("tabs").on("ready", start_script);
var request = require("request").Request;
function start_script(argument)
{
request({
// checking something
url: "http://localhost/check.php",
onComplete: function (response)
{
if ( typeof widget == "undefined" )
{
// make widget
var widget = widgets.Widget({
id: "xxxxxxxx",
label: "zzzzz",
contentURL: self.data.url("http://www.google.com/favicon.ico")
});
}
}
}).get();
}
适用于第一页。重新加载后,它会抛出错误:This widget ID is already used: xxxxxxxx
。
为什么它第二次加载小部件,即使我有if ( typeof widget == "undefined" )
?
如果我没有request
,那么一切都很顺利。 request
改变了什么?
答案 0 :(得分:3)
因为变量widget
尚未在if
条件中定义/未知。您需要使用适当的范围。
您可以尝试:
var widgets = require("widget");
var self = require("self");
var tabs = require("tabs").on("ready", start_script);
var request = require("request").Request;
var widget; //define widget here so that it is visible in the if condition.
function start_script(argument)
{
request({
// checking something
url: "http://localhost/check.php",
onComplete: function (response)
{
if ( typeof widget == "undefined" ) //using the variable here
{
// make widget
widget = widgets.Widget({
id: "xxxxxxxx",
label: "zzzzz",
contentURL: self.data.url("http://www.google.com/favicon.ico")
});
}
}
}).get();
}
或
检查xxxxxxxx
条件中是否存在标识为if
的窗口小部件。