1

だから、私は整数でいくつかの操作を行い、次に値を設定する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。以前は、typeがすでに整数を返す必要があるため、これを実行parseIntしていませんでしたが、とにかく実行しています。(どちらの場合も答えは正しいですが、エラーが発生します。)var answerMath.floor

ここで何が悪いのか理解できません。どんな助けでも大歓迎です。

編集:それがどのように重要かはわかりませんが、これがalert("A: "+A+"\nB: "+B+"\nC: "+C+"\n\nAnswer: "+answer);

A: 41751
B: 20513
C: 190164861567

Answer: 387050803650
4

1 に答える 1

1

radixparseInt関数に値を追加してみてください。

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

アップデート:

あなたの価値はGMスクリプトが保存するには大きすぎます。mozillaでサポートされる最大32ビット数はここ2147483647を参照してください。

値を保存するには、たとえば次のように文字列に変換してみてください。

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

またはtoString()方法を使用して:

GM_setValue("answer", answer.toString());
于 2012-06-22T10:13:48.093 に答える