2012-06-22 53 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

相关问题