草依山的Javascript世界

一个Javascript程序猿的学习纪录剩地,不仅仅是JS,还有Linux、Mac、nodeJs、吃、玩!

lion下的safari6对纯数字使用toString报错, TypeError: Type error

最近有同事反应在Mac OS 10.8也就是Lion上的safari有广告无法展现的问题,但是不是必现,只是偶尔发生,而之前也有同事反馈在ios上的safari广告有时候也无法展现。用Mac刷了会广告,确实有很大概率的出现问题,在ipad上看也是会有概率出现。

绑定本机hosts,打开开发者工具,一个劲的刷,再也不会出现,心中暗惊,怕哥了,躲起来了?关闭浏览器,重新打开,重现了Bug,擦,再打开开发者工具,又无法复现,难道这是一个会躲开发者的Bug?

但是代码已经定位到

utils.encode = function(str) {
   return encodeURIComponent(str.toString());
}

最后通过删减,定位到

  str.toString()

有点惊异,首先传的值不会是undefined和null,都是正常的字符串和数字,理论上调用toString是不应该出现问题的,但是它就是出了,所以还是得想解决办法,其实也挺简单的,换成字符串相加解决之,理论上字符串相加也是调用的toString,为什么它不会出现问题,这很神奇,小伙伴们相当不解,解决问题的代码如下:

utils.encode = function(str) {
   return encodeURIComponent(str + '');
}

后来发现在Github上也已经有人提过这个Bug

单独提出来的代码也无法复现这个Bug,附上测试页面, 这个只是解决问题,真正的原因还没有弄清楚,哪位小伙伴若知详情,求分解。

文章地址: lion下的safari6对纯数字使用toString报错, TypeError: Type error
欢迎关注我的微博与我交流:@草依山
Github上也有一些东西:[Github]
所有文章坚决抵制jb51.net的转载!
2013-07-29

相关文章

2016-09-29 [翻译]bash的各种文件载入执行顺序
2016-05-31 phantomjs在linux下截图中文字体问题
2016-04-24 Promise的错误处理
2016-02-23 URL里的+
2016-02-11 N个数中第K大的数

文章修改纪录

加载中...
Copyright © 2013. Create By 草依山, Fork