错误:GM_setValue的类型不受支持。支持的类型有:string,bool和32位整数

时间:2012-06-22 10:11:23

标签: javascript firefox greasemonkey

所以,我有GreaseMonkey脚本,用整数做一些操作,然后通过GM_setValue设置值。

代码

  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);

现在这在Chrome中运行得非常好,但在某些方面在Firefox中失败了,给出了

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

正确导出值A,B和C,甚至可以按预期计算答案值。使用alert对话框进行检查。 唯一的问题是,它不是通过GM_setValue设置值。之前我没有在parseIntvar answer Math.floor,因为alert("A: "+A+"\nB: "+B+"\nC: "+C+"\n\nAnswer: "+answer);的类型已经应该返回整数,但无论如何都要这样做。 (在这两种情况下,答案都是正确的,但是会给出错误。)

我不明白这里出了什么问题。非常感谢任何帮助。

编辑:不确定它的重要性,但这是通过A: 41751 B: 20513 C: 190164861567 Answer: 387050803650

输出的示例
{{1}}

1 个答案:

答案 0 :(得分: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());