在javascript中创建全局变量列表时出现问题(Tampermonkey)



我想用javascript创建一个全局变量列表,它将向列表中添加新元素。我需要它的全局性,因为我正在使用Tampermonkey,并且我想将旧元素保留在列表中,并能够向其中添加新元素。

我该如何正确地执行此操作?

我试过这样的东西,但它不起作用:c

var check_empty = GM_getValue("arr_names");
if(Array.isArray(check_empty) && check_empty.length > 0){ // list of usernames exists and is not empty
var user = "RandomUsername";
GM_setValue("arr_names", check_empty.push(user));
var arr = GM_getValue("arr_names");
for(var i=0; i<arr.length; i++){
window.alert("Length: " + arr.length + " Elements inside: " + arr[i]);
}
}
else{ // create the list
GM_setValue("arr_names",["Initialized"]);
}

假设我运行了3次这个代码。然后列表需要看起来像这样:

["Initialized", "RandomUsername", "RandomUsername"]

如果执行4次,则如下所示:

["Initialized", "RandomUsername", "RandomUsername", "RandomUsername"]
GM_setValue("arr_names", check_empty.push(user));

如注释中所述,check_empty.push(user)返回更新后的数组的长度,但您应该在此处传递数组。

您可以推送上一行中的元素并使用突变数组:

check_empty.push(user);
GM_setValue('arr_names', check_empty);

最新更新