因此,我正在编写一些GreaseMonKey用户订阅,并且在Firefox中的工作正常,但是如果我尝试在Google Chrome上使用TamperMonkey运行它,我在编码/解码阵列时会得到奇怪的erros。

我尝试使脚本交叉浏览器兼容,因此我必须编写一个函数来决定要使用哪种JSON方法

function jsonEncode(string) { 
  try {
    return JSON.stringify(string); 
  } catch (e) {
    return JSON.encode(string); 
  }
}

function jsonDecode(obj) {
  try { 
    return JSON.parse(obj); 
  } catch (e) { 
    return JSON.decode(obj);
  }
}

为了简化事物,我现在将代码简化为一个简单的数组,并尝试编码/解码和迭代

var array = ['string1', 'string2'];

var encoded = jsonEncode(array);
localStorage.setItem('json_test', encoded);

var decoded = jsonDecode(localStorage.getItem('json_test'));
for(var i = 0; i < decoded.length; i++) {
    console.log(decoded[i]); 
}

我希望输出是

string1
string2

相反,铬给了我这个

[
"
s
t
r
i
n
g
1
"
,
"
s
t
r
i
n
g
2
"
]

有人知道如何解决这个问题,还是Chrome为什么这样做?

编辑1: Chrome版本15.0.874.121 M

编辑2: 仍然没有弄清楚它,但是当我使用一个对象而不是数组尝试时,它可以工作,所以我现在就这样做,谢谢您的时间和帮助!

有帮助吗?

解决方案

在Chrome中打开JS控制台 - 这让您在循环中设置断点 - 并在变量上添加手表。

除了那个jsondecode没有解码 - 仍然有括号...

问题在于您像看起来一样解码字符串 - 为什么它将字符串切成字母 - 就像您对其进行编码一样。

JSON普通代表数组...也许检查文档是否正确的输出参数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top