2016-01-21 85 views

回答

0

爲什麼不使用SVGPathSeg polyfill?那麼你不需要改變任何你現有的代碼。

+0

謝謝你似乎工作得很好!我修正了getTransformToElement –

+0

[getTransformToElement](https://github.com/xosystem/SVG-getTransformToElement-FIX) –

+4

好吧,它的增加了6k(gzipped),因爲Chromium開發人員認爲可以將地毯拉出來在現有API的人員(嘿,夥計們,SVG 1.1是一個標準,它被使用了;它不是一個'工作草案'!)沒有提供替換,只有一個polyfill。不禮貌?是。導致數千名開發人員不得不花費數小時才能解決這個問題,唯一提供的解決方案是一個巨大的polyfill,而且這個市場份額正在發揮重要作用。羅伯特,對於你的回答感到沮喪的評論感到抱歉,並感謝你在Firefox SVG上的工作,我非常感謝它。 – sdupton

1

Robert Longson的建議現在是一個很好的建議。您所提到的API(getPathData,setPathData)是全新的並且尚未實現。在實施和可用之前可能還會有變化。

+0

謝謝你似乎工作得很好!,我做了一個修復[getTransformToElement](https://github.com/xosystem/SVG-getTransformToElement-FIX) –

+3

,所以他們拿出了一個工作功能,並取而代之沒有? –

0

Chrome尚未實現新的getPathData和setPathData API。
你應該使用path data polyfill

https://github.com/jarek-foksa/path-data-polyfill.js

下面是一個代碼示例:

//svg code: 
//... 
//<path d="M0,0 L100,50" id="mypath"></path> 
//<script xlink:href="/js/path-data-polyfill.js"></script> 
//... 

//js code: 
var path = document.getElementById('mypath'); 
var pathdata = path.getPathData(); 
console.log(pathdata); 
console.log(pathdata.length); //2 
console.log(pathdata[0].type); //"M" 
console.log(pathdata[0].values); //[0,0] 
console.log(pathdata[1].type); //"L" 
console.log(pathdata[1].values); //[100,50] 
pathdata.push({type: "C", values: [100,-50,200,150,200,50]}); //add path segment 
path.setPathData(pathdata); //set new path data 
console.log(path.getAttribute('d')); //"M0,0 L100,50 C100,-50,200,150,200,50" 
0

回落到

path.setAttribute('d', ...) 

對瀏覽器發現不符合SVG 1.1。

此外,如果瀏覽器是一個品牌,以前支持SVG 1.1,然後打印一條消息提示用戶升級回到舊版本(甚至可能考慮不同的,更穩定,品牌瀏覽器,這個瀏覽器的設計可能考慮到開發人員需要更多的時間來解決缺乏曾經完美運行的功能,然後爲了替換它們而刪除的功能,正如ktejik指出的那樣)。