javascript - 内联 svg 作为指令(Firefox 问题)

标签 javascript angularjs firefox svg inline-svg

在我的项目中,我使用内联 svgs,如下所示:

HTML

<div style="display: none">
  <svg xmlns="http://www.w3.org/2000/svg">
    <symbol id="dropdown" viewBox="0 0 3.359 1.929"><path d="M1.68 1.929a.29.29 0 0 1-.204-.083L.085.484a.28.28 0 0 1 0-.401.293.293 0 0 1 .409 0L1.68 1.244 2.865.083a.294.294 0 0 1 .41 0 .28.28 0 0 1 0 .401l-1.39 1.361a.3.3 0 0 1-.205.084z"></path></symbol>
  </svg>
</div>
<div one-svg svg-href="'dropdown'"></div>

JS

var app = angular.module('app', []);

app.directive('oneSvg', function() {
    return {
        templateUrl: 'inline-svg.html',
        scope: {
            svgHref: "=",
            svgClass: "="
        }
    };
});

内联-svg.html

<svg ng-class="svgClass">
    <use ng-href="{{ '#' + svgHref }}" ng-attr-href="{{ '#' + svgHref }}" href=""></use>
</svg>

这是fiddle

上面创建的指令仅在 Chrome 和 IE10 中有效,但在 Firefox (v 50.1.0) 中无效。

如果我添加不带指令的内联 SVG,它在 Firefox 中工作正常。请帮助我使该指令即使在 Firefox 中也能工作。

最佳答案

查看此 PLUNKER 中的更改.
它在 FireFox、Chrome 和 Safari 上对我有用。

HTML:

<svg style="display:none;" xmlns="http://www.w3.org/2000/svg" <svg style="display:none;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
  <defs>
    <symbol id="dropdown" viewBox="0 0 3.359 1.929">
      <path d="M1.68 1.929a.29.29 0 0 1-.204-.083L.085.484a.28.28 0 0 1 0-.401.293.293 0 0 1 .409 0L1.68 1.244 2.865.083a.294.294 0 0 1 .41 0 .28.28 0 0 1 0 .401l-1.39 1.361a.3.3 0 0 1-.205.084z"></path>
    </symbol>
  </defs>
</svg>

<div one-svg="dropdown"></div>

指令:

app.directive('oneSvg', function() {
    return {
        template: '<svg ng-class="svgClass"><use xlink:href="{{ \'#\' + href }}"></use></svg>',
        scope: {
            href: "@oneSvg",
            svgClass: "=?"
        }
    };
});

关于javascript - 内联 svg 作为指令(Firefox 问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41845534/

相关文章:

javascript - 用于跟踪 HTTP 请求来源的 JS/Web 调试器?

ubuntu - 禁用向左和顶部滑动手势ubuntu

linux - 某些网站仅在 Linux 上的 Firefox 中返回禁止响应(尽管将用户代理更改为 Chrome 是可行的);常见的原因?

javascript - HtmlUnit 没有创建 HtmlPage 对象

javascript - 使用内容安全策略将服务器数据传递给客户端脚本

javascript - document.createElement ('img' ) v/s new Image()?哪一个要附加到 DOM?

firefox - 如何禁用 Firefox 手势?

javascript - javascript 混淆器是否适用于 AngularJS?

javascript - Angular $compile/$controller 未将范围绑定(bind)到动态 HTML

javascript - ng-选择 AngularJS