Chrome 中的 SVG“使用”标签已损坏

2024-01-03

SAP(AngularJS 和 Angular Route)具有由 svg-sprite 制作的基于图标的导航。所以,我有这样的内联代码:

<div style="height: 0; width: 0; position: absolute; visibility: hidden">
<svg xmlns="http://www.w3.org/2000/svg">
    <symbol id="icon-grid-32" viewBox="0 0 32 32">
        <g stroke-width="2" stroke-linecap="round" stroke-miterlimit="10" stroke-linejoin="round">
            <path d="M2 2h11v11H2zM19 2h11v11H19zM2 19h11v11H2zM19 19h11v11H19z"/>
        </g>
    </symbol>
</svg>
</div>

导航中的图标如下所示:

<a href=""><svg class="icon icon-32 outline black"><use xlink:href="#icon-grid-32"></use></svg></a>

我在这个导航中看到的一切都是空的,<use>大小为 0 × 0 像素。我了解火狐浏览器xml:base 的错误 https://bugzilla.mozilla.org/show_bug.cgi?id=652991,但添加 xml:base 对我没有帮助。你可以尝试这个例子:http://css.yoksel.ru/assets/demo/svg-in-firefox/svg-has-base.html http://css.yoksel.ru/assets/demo/svg-in-firefox/svg-has-base.html

它适用于 Firefox、Safari 和其他浏览器,但不适用于 Chrome 49+(48 版本没有此问题)。


这是由 AngularJS 的依赖组合引起的<base href="/" />和UI路由,当应用程序不处于“根”状态时,相对哈希链接<use>元素无法正确解析。

要解决这个问题,您需要解决xlink:href使用绝对路径。您可以执行以下操作:

角度图标模板.html

<svg class="c-icon" viewBox="0 0 32 32">
    <use xlink:href="" ng-attr-xlink:href="{{baseUrl + '#' + iconName}}" />
</svg>

角度图标.js

angular.module('angularIcon', [])
    .directive('angularIcon', {
        templateUrl: 'angular-icon-template.html',
        scope: { iconName: '@' },
        controller: function($scope) {
            $scope.baseUrl = window.location.href.replace(window.location.hash, '');
        }
    });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chrome 中的 SVG“使用”标签已损坏 的相关文章

随机推荐

  • 如何在 HighChart 中动态地将轴从线性更改为对数

    我想动态改变轴linear to 对数在 HighCharts 中反之亦然 请看这个小提琴的例子 http jsfiddle net dodoflying ZCecV yAxis linear type logarithmic minorT
  • 返回工作日列表,从给定工作日开始

    我的任务是定义一个函数weekdays weekday that 返回工作日列表 从给定的工作日开始 它应该像这样工作 gt gt gt weekdays Wednesday Wednesday Thursday Friday Saturd
  • 对 AWS 控制台登录强制执行 MFA,但不对 API 调用强制执行 MFA

    我希望强制所有 IAM 用户 本地和远程 启用并激活他们的 MFA 设备 我希望他们能够让 MFA 完成各自的任务 我正在尝试以下政策 Effect Allow Action Resource Condition Bool aws Mult
  • Nodejs 服务器主机名

    好的 在 Node js 中似乎很容易获取向我的服务器发出的请求的主机名 app get function req res console log req headers host 有没有一种简单的方法来确定我实际的 http 服务器的主机
  • python 中是否有与 php 的 $$variables 类似的语法

    python 中是否有与 php 的 variable 类似的语法 我实际上正在尝试的是根据值加载模型 例如 如果值为 Song 我想导入 Song 模块 我知道我可以使用 if 语句或 lambda 但是类似于 php 的 variabl
  • SQL Server 存储过程区分大小写吗?

    我有一个区分大小写的服务器 SQL Latin1 General CP1 CS AS 但数据库不区分大小写 SQL Latin1 General CP1 CI AS 如果我尝试在数据库上创建以下存储过程 则会收到错误 必须声明标量变量 te
  • Xamarin Forms CollectionView TapGestureRecognizer 未在标签上触发

    我有一个 XF 应用程序 定义了以下集合视图 第二个标签有一个不触发的 TapGestureRecognizerDoSomethingInteresting当我点击标签时在模型中 在 Android 上尝试这个 有人可以看看问题是什么吗 工
  • 使用 *apply 函数访问数据框的列名称

    我需要为初学者使用 R apply 函数制作教程 第一次不使用 reshape 或 plyr 包 我试着lapply 因为我读了apply对于数据框不好 这个数据框的一个简单函数 我想使用命名列来访问数据 fDist lt function
  • Powershell 中的标准化文件路径比较

    假设我有以下两条路径 比如说 两者都是有效的 p1 D folder1 p2 D Folder1 我想比较这两条路径的相等性 我期望两条路径是相同的 我尝试了以下两个命令 Resolve Path p1 eq Resolve Path p2
  • 我应该通过引用传递shared_ptr吗? [复制]

    这个问题在这里已经有答案了 传递shared ptr的最佳实践是什么 目前我传递shared ptr函数参数 如下所示 void function1 shared ptr
  • Matplotlib 中颜色图的设置范围

    我正在使用 matplotlib 绘制一个简单的图表 cm plt get cmap Blues nx draw circular G node color White edge color range G number of edges
  • 使用 ASP.net 对文件夹中的图像进行计数

    我想计算文件夹中的图像数量 但它会产生以下错误 Could not find a part of the path c Content slideshow images image 所有图像都位于项目的文件夹中 位于一个Content sl
  • Java 四舍五入

    我怎样才能将 numberGrade 的值向上舍入 这样如果它是 89 5 它就会变为 90 numberGrade 被视为双精度值 但将其设为 int 不会将其向上或向下舍入 public class GradeReporter The
  • 为什么类的常量数据成员需要在构造函数中初始化?

    我想知道为什么类的常量数据成员需要在构造函数中初始化 为什么不在其他地方初始化 这样做和不这样做有什么影响 我也看到只有静态常数积分数据可以在类内部初始化 但不能在类内部初始化任何数据成员 例如 假设下面是我的班级声明 class A in
  • 控制数组 vb.net

    我正在尝试在 VB net 中为购物系统编写一个程序 它将读取数据库并填充表单上的项目 该应用程序在可滚动面板内的标签中显示产品名称等信息 我正在创建对象并在运行时分配文本等值 我在代码中使用循环 如果我使用 vb 6 我将有一个控制数组
  • MongoError:连接未知

    我有一个 mongo 服务器在 localhost 27017 上运行 使用 mongo 控制台我可以在 mongodb 中插入数据 但是当我尝试使用 node js 连接它时 我收到上述错误 以下是使用的代码 var MongoClien
  • Anaconda 中的“基础”(最佳实践)的目的是什么?

    它说这是默认环境 但 不过 您不想将程序放入您的基本环境中 那么我到底应该用它做什么呢 我创建的其他环境是否继承自基础环境 基础环境在哪里conda本身被安装 最好使用Miniconda 并安装all将您想要的东西放入单独的环境中 其他环境
  • 如何让 Perl 正则表达式仅在 $1 < $2 时匹配?

    我无法完全开始工作的部分是条件 因为它总是失败 use Test More tests gt 2 my regex qr d d g1 lt g2 FAIL x like 23 36 regex should match unlike 36
  • 用户/角色管理系统的最佳设计? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这是我多次遇到的软件设计问题 但从未找到理想的解决方案 我现在也再次处理它 许多应用程序需要某种形式的用户 角色管理 您有基本用户 这
  • Chrome 中的 SVG“使用”标签已损坏

    SAP AngularJS 和 Angular Route 具有由 svg sprite 制作的基于图标的导航 所以 我有这样的内联代码 div style height 1 width 1 div