浏览器DOM更新后操作的SVG节点不可见

基本编码器

我没有一个比这个更好的问题标题了。如果您有一个,请随时对其进行编辑。

无论如何,我目前正在Dart和Polymer中编写SVG机械手,到目前为止效果很好。但是,当我尝试将SVG元素包装在另一个元素中时,浏览器将以这种方式更新SVG元素,使其不再可见。

例子:

SVG之前的操作。所有元素均可见并正确显示。

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="446px"
     height="788.605px" viewBox="0 0 446 788.605" enable-background="new 0 0 446 788.605" xml:space="preserve">
    <g><!-- some content --></g> <!-- wrap this element in another one -->
    <g><!-- more content --></g>
</svg>

SVG操作后。

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="446px"
         height="788.605px" viewBox="0 0 446 788.605" enable-background="new 0 0 446 788.605" xml:space="preserve">
    <g><!-- wrapper -->
        <g><!-- content not visible anymore --></g>
    </g>
    <g><!-- content still visible --></g>
</svg>

该操作的代码如下所示(飞镖):

  Element _createWrapper(Element element) {
    Element wrapper = new Element.tag('g');
    var parent = element.parent;
    int idx = parent.children.indexOf(element);
    wrapper.append(element);
    // insert wrapper at the original element's position
    // in its parent
    parent.children.insert(idx + 1, wrapper);
    wrapper.append(element);

    // if I use softReload() everything is visible again
    //svg.softReload(); 
    return wrapper;
  }

  void softReload() {
    if (_svg != null) _svg.remove();
    _svg = new SvgElement.svg(_svg.outerHtml);
    $['container'].append(_svg);
  }

如评论中所述,当我使用softReload()方法时,可以正确显示SVG。但是,我发现进行这样的“软重装”非常丑陋,因此,我不仅要寻求更好的解决方案,而且要问为什么会出现此问题。

罗伯特·朗森

您需要通过SvgElement.tag而不是Element.tag创建SVG元素。目前,您正在创建标记名称为g而不是SVG<g>元素的HTML元素。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

浏览器DOM更新后操作的SVG节点不可见

来自分类Dev

某些SVG符号在浏览器中不可见

来自分类Dev

聚合物纸输入仅在 shadow dom 中,在浏览器中不可见

来自分类Dev

Google Chrome浏览器图标不可见

来自分类Dev

在SSAS Cube浏览器中可见的尺寸,在Excel中不可见

来自分类Dev

laravel 5控制器在浏览器中不可见

来自分类Dev

可见的浏览器回流

来自分类Dev

HttpClient重定向结果在浏览器中不可见

来自分类Dev

Java插件对所有浏览器都不可见

来自分类Dev

HttpClient重定向结果在浏览器中不可见

来自分类Dev

使用tomcat设置的jenkins运行硒测试时,浏览器不可见

来自分类Dev

散景 openStreetMap 磁贴在所有浏览器中都不可见

来自分类Dev

浏览器如何识别DOM节点?

来自分类Dev

使用javascript添加到DOM的SVG不可见。

来自分类Dev

Fabric JS自定义旋转图标仅在iPhone的Google Chrome浏览器中不可见

来自分类Dev

从URL栏可见的Cookie,但在浏览器开发人员工具的“应用程序”选项卡中不可见

来自分类Dev

从控制台运行时,Perl系统命令输出可见,但通过浏览器CGI运行时,则不可见

来自分类Dev

为什么我的徽标在所有浏览器中可见,但在打印视图中不可见

来自分类Dev

javascript代码在浏览器上可见

来自分类Dev

在浏览器的“检查元素”中可见的IP地址

来自分类Dev

画布:检测在浏览器中是否可见

来自分类Dev

Chrome浏览器可见性:折叠

来自分类Dev

kdb/q:增加浏览器中的可见行

来自分类Dev

浏览器弹出请求密码可见

来自分类Dev

如何防止浏览器对 img 的绘制可见?

来自分类Dev

节点不可见模块

来自分类Dev

svg路径不可见

来自分类Dev

SVG线不可见

来自分类Dev

SVG图标不可见

Related 相关文章

热门标签

归档