2011-11-01 54 views
0

我有一个脚本使用这条线作为一些地理编码的一部分。在IE8中的Javascript行破解

var dms = String(dmsStr).trim().replace(/^-/,'').replace(/[NSEW]$/i,'').split(/[^0-9.,]+/); 

它在IE浏览器以外的所有浏览器都能正常工作,IE浏览器正在踢出一个错误。

即时通讯发送参数。

0.5501039994056782 

这不是我的代码,我只是在调试它。我假设它可能是一个问题,将它转换为字符串,因为它显然是一个数字。

但我想要一些反馈。

+1

你什么错误? – SLaks

+2

*“这是踢出一个错误......”* ***什么***错误?! –

+0

下面的评论工作得很好。 – David

回答

3

IE8中没有String.trim()。你可以这样添加:

if(typeof String.prototype.trim !== 'function') { 
    String.prototype.trim = function() { 
    return this.replace(/^\s+|\s+$/g, ''); 
    } 
} 

this answer.

+0

伟大的答案工作的一种享受。现在进一步陷入困境。如果有人想获得额外帮助,请查看此URL以获取诊断下一个问题的帮助。 http://client.bytewire.co.uk/marblesolar/roof-calculator/你应该看到发生的是在谷歌地图上绘制的方向线。查看其他浏览器进行测试。 IE在jQuery中报告失败,然后由于未能传递正确的数据。 – David

0

我不认为IE浏览器有trim()。试试这个:

if(typeof String.prototype.trim !== 'function') { 
    String.prototype.trim = function() { 
    return this.replace(/^\s+|\s+$/g, ''); 
    } 
} 

有关更多信息,请参见this SO question

0

确切的错误是

"Object doesn't support property or method 'trim'" 

因此要解决,你可以这样做:

var dms = jQuery.trim(String(dmsStr)).replace(/^-/,'').replace(/[NSEW]$/i,'').split(/[^0-9.,]+/);