JSON stringify 忽略同一浏览器不同选项卡中的参数

JSON stringify ignoring parameters in different tabs same browser

我需要通过用户脚本 (TamperMonkey) 美化现有视图。该代码在 JSFiddle 中有效(参见 http://jsfiddle.net/2phrogm5/),但不在我需要的地方:在 Zabbix Web 界面中。

重现问题:

JSON.stringify({"asd": {"asd": 3}}, null, 4)

预期结果:

"{
    "asd": {
        "asd": 3
    }
}"

我的输出:

"{"asd":{"asd":3}}"

https://whosebug.com/ 上使用开发者工具不存在此问题。

我已经尝试了 JSON.stringify() array bizarreness with Prototype.js 中提供的解决方案,但没有成功。

查看Zabbix web界面源码,可以看到方法被覆盖的地方:

zabbix-software$ egrep -iR "JSON.stringify *="
frontends/php/jsLoader.php:             'var _json_stringify = JSON.stringify;'.
frontends/php/jsLoader.php:             'JSON.stringify = function(value) {'.

原始功能仍然可用,只是名称不同:_json_stringify()。更新后的 jsfiddle 是 http://jsfiddle.net/u7r8q19g/

更新

在 Zabbix 5 中,他们把东西放回原处或者帮助我,所以现在我正在做:

            if (typeof _json_stringify === "function") {
                item.html(_json_stringify(JSON.parse(text), undefined, 4))
            } else {
                item.html(JSON.stringify(JSON.parse(text), undefined, 4))
            }

感谢 How to tell if a JavaScript function is defined