Che*_*har 5 html internet-explorer svg google-chrome
DOM已经包含一个空的SVG标记(svg).当我尝试使用id()动态追加USE现有SVG符号(symbol)的标记时iconId:
svg.empty();
svg[0].setAttribute('viewBox', symbol.getAttribute('viewBox'));
svg.append('<use xlink:href="#' + iconId + '"></use>');
Run Code Online (Sandbox Code Playgroud)
它不再呈现SVG.在Chrome中,如果我添加,则呈现:
element.html(element.html());
Run Code Online (Sandbox Code Playgroud)
或手动操作viewBox属性,但这不是一个真正的解决方案,IE根本不喜欢它.值得一提的是,如果我直接附加SVG图形,则元素呈现.
这里发生了什么,为什么在附加USE标签后没有SVG绘图?
毕竟它确实是命名空间的问题.
具体而言,必须使用document.createElementNS和创建和设置SVG元素和属性node.setAttributeNS.
$(document).ready(function(evt) {
var svgns = 'http://www.w3.org/2000/svg',
xlinkns = 'http://www.w3.org/1999/xlink',
use = document.createElementNS(svgns, 'use');
use.setAttributeNS(xlinkns, 'xlink:href', '#save');
document.getElementById('useSVG').appendChild(use);
});Run Code Online (Sandbox Code Playgroud)
#svgStore {
display: none;
}
#useSVG {
width: 16px;
height: 16px;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<svg style="display:none;" id="svgStore" style="display: none;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<symbol viewBox="0 0 16 16" id="save"><title>save</title> <g id="svgstore3748a955346b4a088bbdc55a22f56504_x31_6_13_">
<path style="fill-rule:evenodd;clip-rule:evenodd;" d="M9,4h2V2H9V4z M13,13H3v1h10V13z M13,11H3v1h10V11z M13,0H0v16h16V3L13,0z
M3,1h9v4H3V1z M14,15H2V8h12V15z M13,9H3v1h10V9z">
</path>
</g>
</symbol>
</svg>
SVG use:
<svg id="useSVG" xmlns="http://www.w3.org/2000/svg"></svg>Run Code Online (Sandbox Code Playgroud)
感谢@RobertLongson和http://www.kevlindev.com/tutorials/basics/shapes/js_dom/指导答案.
| 归档时间: |
|
| 查看次数: |
4819 次 |
| 最近记录: |