由於某些原因,我無法讓我的SVG過濾器在Firefox中工作。但是,他們在Opera中運行良好。我設置爲過濾器的屬性就消失了。這很奇怪。Firefox中的SVG過濾器
這裏是我的javascript代碼:
defsElement = SVGDoc.createElement("defs");
var filterElement = SVGDoc.createElement("filter");
filterElement.setAttribute("id", "cm-mat");
filterElement.setAttribute("filterUnits", "objectBoundingBox");
var fecolormatrixElement = SVGDoc.createElement("feColorMatrix");
fecolormatrixElement.setAttribute("type", "matrix");
fecolormatrixElement.setAttribute("in", "SourceGraphic");
fecolormatrixElement.setAttributeNS(null, "values", "1 1 1 1 1 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1");
filterElement.appendChild(fecolormatrixElement);
defsElement.appendChild(filterElement);
SVGDoc.documentElement.insertBefore(defsElement, SVGDoc.documentElement.childNodes.item(1));
partRef = getElementFromID(SVGDoc.documentElement, part);
if(partRef != null)
{
partRef.style.setProperty('filter', 'url(#cm-mat)', null);
}
有什麼想法? 謝謝
是的,如果應用過濾器,結果應該是全白的。我很想知道更多關於Opera在原始示例中做了什麼(我的猜測是錯誤名稱空間中的元素,因爲您使用createElement而不是createElementNS)。上面代碼片段的非腳本化等價物顯示了Opera和Firefox的行爲相同(白色輸出)。 – 2010-05-18 06:36:51
對不起,我正在旋轉數值並忘記重置它們。我嘗試了一些截然不同的值,但沒有任何變化。我只是放棄了動態添加JavaScript的svg元素,並手動添加它們。它現在有效,謝謝。 – Nick 2010-05-18 15:33:07