我对.toString()函数有一个小(大)问题。
我有一个包含SVG折线的字符串,我需要获取“点”属性。
我已经尝试过使用myPoly.toString(),但是在所有情况下,如果我在Firefox或IE中运行我的应用程序,都会收到不同的答案。
在firefox中,我将正确接收到的值写入了SVG,在IE中,点字符串已转换为数字。
例:
火狐浏览器
折线id =“ 1191” points =“ 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.378175552552462462840
IE浏览器
折线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
如何防止这种转变?
谢谢。亚历山德拉。
最佳答案
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
// ...
}