【发布时间】:2019-06-12 17:55:11
【问题描述】:
我有一个 Tampermonkey 脚本,可以将一些信息添加到基于浏览器的游戏中。我使用一段简单的代码根据玩家的语言环境为数字添加千位分隔符:
function nThousand(x) {
return x.toLocaleString();
}
这个函数在很多代码中都有用到,例如:
$("#CustomStats" + stat).html(
"<b>" + texts[lang].stat_points_need + ":</b> " + nThousand(remainingPoints) + "<br />" +
"<b>" + texts[lang].money_need + ": </b>" + nThousand(remainingMoney) + "<br />" +
"<b>" + texts[lang].money_spent + ": </b>" + nThousand(currentMoney) + "<br /><br />" +
"<b>" + texts[lang].bought_points + ": </b>" + nThousand(boughtPoints) + "<br />" +
"<b>" + texts[lang].equipment_points + ": </b>" + nThousand(itemPoints) + "<br />" +
"<b>" + texts[lang].points_from_level + ": </b>" + nThousand(skillPoints) + "<br />"
);
这已经完美运行了很长时间,但由于某种原因在游戏运行的特定平台上,脚本现在拒绝加载并给出以下错误消息:
无法读取未定义的属性“toLocaleString”
我已经返回了几十个版本,以确保它不是我最近添加或更改的内容,老实说,我什至不知道从哪里开始解决这个问题。该函数仅在存在要本地化的值时运行,并且它仅在游戏运行的一个特定平台上执行此操作。
我的问题:可能是什么原因造成的,我将如何解决这个问题?
【问题讨论】:
-
什么平台有问题?哪些其他平台有效?你能确定在哪个调用中值是空的吗?您可以使用调试器来执行此操作,也可以在函数中添加对 null 参数的检查,然后 console.trace 有问题的代码。
-
使用console.trace帮助我找出了作恶者!事实证明,它与平台没有任何关系,而是在游戏中缺少某些项目并试图提取不存在的数字的情况下。它发生在同一个平台上是一个巧合,也是以前从未发生过的事实。