toString()在Firefox和IE之间的工作方式不同

时间:2014-01-17 21:28:23

标签: javascript svg

我的函数.toString()有点(大)问题。 我有一个包含SVG折线的字符串,我需要获得“点”属性。 我已尝试使用myPoly.toString(),但在所有情况下,如果我在Firefox或IE中运行我的应用程序,我会收到不同的答案。 在firefox中我正确地收到了值,因为它被写入SVG,在IE中点数字符串被转换为数字。

示例:

Firefox

折线ID = “1191” 点=“303270.685842807,4628092.26231488 303132.683184,4628154.95824449 303058.00286968,4628191.46425108 303006.318032042,4628217.33599697 302959.834485566,4628250.84303829 302913.412651264,4628286.5711075 302804.378175552,4628374.03209193 302771.994016706,4628406.03998642 302741.241605215,4628436.89177469

IE

polyline id =“1191”points =“303271,4.62809e + 006 303133,4.62816e + 006 303058,4.62819e + 006 303006,4.62822e + 006 302960,4.62825e + 006 302913,4.62829e + 006 302804, 4.62837e + 006 302772,4.62841e + 006 302741,4.62844e + 006

如何防止转型?

感谢。亚历山德拉。

1 个答案:

答案 0 :(得分:0)

svg多边形(和路径)的字符串值在浏览器之间以位置空格和逗号的形式返回。通过indexOf解析将无法运行cross = browser。 当我们使用点列表时,多边形点是交叉浏览器。然后在比较x,y值时,您可以舍入到您应用的“安全”小数位...我已经使用了4。

var polyPoints=myPolygon.points
var n=polyPoints.numberOfItems
for(var k=0;k<n;k++)
{
  var xy=polyPoints.getItem(k)
  var x=xy.x
  var y=xy.y
// ...
}