Ensure $tw.utils.hasClass/addClass/removeClass work with SVG elements

These docs make clear that .className isn't recommended for SVG elements:

https://developer.mozilla.org/en-US/docs/Web/API/Element/className#Notes
optimising-macrocalls
jeremy@jermolene.com 2020-04-22 15:32:20 +01:00
rodzic a4fb57bf15
commit 5f98e7d7b3
1 zmienionych plików z 5 dodań i 5 usunięć

Wyświetl plik

@ -29,23 +29,23 @@ exports.removeChildren = function(node) {
};
exports.hasClass = function(el,className) {
return el && el.className && el.className.toString().split(" ").indexOf(className) !== -1;
return el && el.hasAttribute && el.hasAttribute("class") && el.getAttribute("class").split(" ").indexOf(className) !== -1;
};
exports.addClass = function(el,className) {
var c = el.className.split(" ");
var c = (el.getAttribute("class") || "").split(" ");
if(c.indexOf(className) === -1) {
c.push(className);
el.className = c.join(" ");
el.setAttribute("class",c.join(" "));
}
};
exports.removeClass = function(el,className) {
var c = el.className.split(" "),
var c = (el.getAttribute("class") || "").split(" "),
p = c.indexOf(className);
if(p !== -1) {
c.splice(p,1);
el.className = c.join(" ");
el.setAttribute("class",c.join(" "));
}
};