我正在製作通知系統userscript。基本上它的作用是發送GET請求到一個帶有.txt文件的站點。該文件輸出是這樣的:即使if語句爲false,變量= true
12345|User notification
all|Everyone will see this
12345
是用戶的ID和all
正好被設置要顯示的消息給大家。當我編寫用戶的ID(如12345)時,它會向ID 12345的特定用戶發送通知,如果我寫入「全部」,它會向每個人發送通知。
問題:我對每個通知都有一個解除按鈕(因爲兩者都可以同時顯示),但是當我解散這兩個通知時,然後發送一個新通知,兩個通知都會顯示出來,即使我被解僱了其中之一。這裏是我的代碼:
GM_xmlhttpRequest({
method: "GET",
url: "http://website.com/notification.txt",
ignoreCache: false,
onload: function(response){
res = trim(response.responseText);
array = res.split("\n");
for(i = 0; i < array.length; i++) {
array2 = array[i].split("|");
if(array2[0] == uid) {
userMessage = array2[1];
}
if(array2[0] == "all") {
allMessage = array2[1];
}
}
if(typeof userMessage !== 'undefined'){
if(GM_getValue("userMessage") != userMessage) {
GM_setValue("userMessage", userMessage);
GM_setValue("userDismiss", false);
}
}
if(typeof allMessage !== 'undefined'){
if(GM_getValue("allMessage") != allMessage) {
GM_setValue("allMessage", allMessage);
GM_setValue("allDismiss", false);
}
}
}
});
看看這兩個if語句:
if(array2[0] == uid) {
if(array2[0] == "all") {
來檢查,如果用戶ID等於用戶的UID(用戶ID),或者如果它說all
。再來看看這些:
if(GM_getValue("userMessage") != userMessage) {
if(GM_getValue("allMessage") != allMessage) {
這些檢查,如果從先前通知的存儲信息(內部GM_getValue)不等於它剛剛收到的新數據。如果相同,它不應該繼續,但是,如果只有一個通知不同,它會說兩個if語句都是真的,然後繼續。即使GM_getValue("userMessage") equals userMessage
,它仍將繼續執行if語句,即使它說!=
。另外,我在userMessage,allMessage和GM_getValue()函數上嘗試了console.log(),如果我嘗試爲所有人添加通知,它會說userMessage與GM_getValue(「userMessage )所以這些if語句有什麼問題,但我不知道是什麼。
任何幫助,將不勝感激,我在這裏很困難,所以請幫助我。讓我知道如果你需要更多的信息。