У меня есть любопытная проблема (и исправление), когда я рисую прямоугольник с нулевой непрозрачностью (для событий мыши), но он не прозрачен. В прошлом он был прозрачным, но я кое-что изменил в коде, и он больше не прозрачен. Это прямоугольник:
shape = svgDocument.createElementNS(svgns, "rect");
shape.setAttributeNS(null, "x", x);
shape.setAttributeNS(null, "y", y);
shape.setAttributeNS(null, "width", w);
shape.setAttributeNS(null, "height", h);
shape.setAttributeNS(null, "stroke", "none");
shape.setAttributeNS(null, "stroke_width", 0);
shape.setAttributeNS(null, "fill_opacity", 0);
shape.setAttributeNS(null, "stroke_opacity", 0);
shape.setAttributeNS(null, "stroke_dasharray", 0);
shape.setAttributeNS(null, "fill", "#ffffff");
shape.setAttributeNS(null, "onmouseover", "popup_on(evt)");
shape.setAttributeNS(null, "onmouseout", "popup_off(evt)");
svgDocument.documentElement.appendChild(shape);
Я что-то изменил - я не уверен, что - и поле больше не прозрачно - оно полностью скрывает фоновые линии сетки. Я прогуглил это и попытался изменить цвет заливки без изменений. В конце концов, я нашел примеры Mozilla MDN, в которых использовалось «прозрачное». Это работает как в Chrome, так и в FF (не пробовал IE9).
«прозрачный» не задокументирован как значение в спецификации SVG 1.1 2nd edn. Есть идеи, что здесь происходит? Есть ли что-то необычное в прямоугольнике выше?