2012-06-22 54 views
1

所以,我有GreaseMonkey Script,它用整數執行一些操作,然後通過GM_setValue設置值。錯誤:GM_setValue不支持的類型。支持的類型是:字符串,布爾型和32位整數

代碼

var A = parseInt(StringA); 
    var B = parseInt(StringB); 
    var C = parseInt(StringC); 
    var answer = parseInt(Math.floor(Math.max((A/B),1)*C)); 
    GM_setValue("answer",answer); 

現在這個工作完全正常的瀏覽器,但不知何故,在Firefox中出現故障,給

Error: Unsupported type for GM_setValue. Supported types are: string, bool, and 32 bit integers.

值A,B和C是正確正在導出,即使答案的價值是按照預期計算的。用alert對話框檢查它。 唯一的問題是,它不是通過GM_setValue設置值。之前我沒有在var answer上做parseInt作爲Math.floor類型已經應該返回整數,但只是做它。 (在這兩種情況下,答案都是正確的,但是出現錯誤。)

我不明白這裏發生了什麼問題。任何幫助,不勝感激。

編輯:不知道它是如何重要,但在這裏是通過alert("A: "+A+"\nB: "+B+"\nC: "+C+"\n\nAnswer: "+answer);

A: 41751 
B: 20513 
C: 190164861567 

Answer: 387050803650 
+0

什麼是'answer'價值? – antyrat

+0

增加了樣本值和輸出。不知道爲什麼這很重要,但仍然如此。 – Hrishikesh

回答

1

嘗試樣本輸出給radix值添加到您的parseInt函數功能:

parseInt(Math.floor(Math.max((A/B),1)*C), 10); 

更新:

您的價值對於GM腳本來說太大了。 mozilla 2147483647中最大支持32位的數字請參見here

要保存你的價值,不妨將其轉換爲字符串,例如:使用

GM_setValue("answer", "" + answer + ""); 

toString()方法:

GM_setValue("answer", answer.toString()); 
+0

仍然一樣。輸出值已經是一個整數。 – Hrishikesh

+0

查看我的更新回答 – antyrat

+0

工作正常。我嘗試了'alert(typeof(answer))',並且'''而不是'integer',所以我使用了'answer.toString()'。但基本上你是對的。謝謝。啊哈,剛注意到你也建議'toString'。謝謝 – Hrishikesh

相關問題