首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Meteor应用程序仅在FireFox上崩溃

Meteor应用程序仅在FireFox上崩溃
EN

Stack Overflow用户
提问于 2015-03-07 00:01:33
回答 1查看 325关注 0票数 1

我的Meteor应用程序在FireFox上运行时崩溃了4次,出现这个错误的肯定是第四个,因为这个函数在整个html模板中被调用了大约30次。

代码语言:javascript
复制
"Exception in template helper: @http://www.scr9.com:3000   /onepage.js?6b34dec0cc55de19e1c0ff682ac83dd9dce574d6:57:2
bindDataContext/<@http://www.scr9.com:3000/packages    /blaze.js?efa68f65e67544b5a05509804bf97e2c91ce75eb:2727:14
Blaze._wrapCatchingExceptions/<@http://www.scr9.com:3000/packages/blaze.js?efa68f65e67544b5a05509804bf97e2c91ce75eb:1606:14
Spacebars.call@http://www.scr9.com:3000/packages/spacebars.js?7f53771c84a2eafac2b561c9796dda0d8af8e7f5:171:12
Spacebars.mustacheImpl@http://www.scr9.com:3000/packages/spacebars.js?7f53771c84a2eafac2b561c9796dda0d8af8e7f5:108:10
Spacebars.mustache@http://www.scr9.com:3000/packages/spacebars.js?7f53771c84a2eafac2b561c9796dda0d8af8e7f5:112:16
Template.writeInvoice</</</<.value@http://www.scr9.com:3000/template.onepage.js?0b87a7326f8eda037de95427f14c078c4ab026ac:1005:18
Blaze._withCurrentView@http://www.scr9.com:3000/packages/blaze.js?efa68f65e67544b5a05509804bf97e2c91ce75eb:2043:12
.visitAttribute@http://www.scr9.com:3000/packages/blaze.js?efa68f65"[…]

在使用Chrome、IE和Safari时工作正常。这是它在第57行引用的函数;

代码语言:javascript
复制
Handlebars.registerHelper("formatMoney", function(str) {    
console.log(str);  // reports 0 in Chrome, IE, Safari. undefined in FF
if (typeof str == "string")
{
    str = Number(str); // line 57
}
str = str.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
if (str == "0.00")
{
    return "0.00";
} else {
    return "$"+str; 
}   
});

当它第一次启动时,我还没有数据,所以这个函数只接收str = 0。你知道FF会发生什么吗?

EN

回答 1

Stack Overflow用户

发布于 2015-03-07 02:43:39

这可能是因为两件事:

首先,正则表达式,特别是带有/g的正则表达式可能会导致错误,而不测试任何东西,我敢打赌这就是问题所在。

其次,这里进行了很多强制操作,所以首先,在将str参数传递给函数之前,我会强制它成为一个数字。如果这来自您的数据库,这应该很容易,因为您在数据进入之前对其进行了消毒,对吗?对吗?

代码语言:javascript
复制
Template.registerHelper("formatMoney", function(str) { 
  var formatOpts = {style: "currency", currency: "USD"};
  return str ? str.toLocaleString("en-US", formatOpts ) : "0.00";
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28902665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档