字符“›”(›)在IE11中破坏了Angular。

9
我在使用IE11时遇到了一个字符问题。它被用在了一个angular指令的jade模板中,而且只有在IE11中才会出现问题。
我有两个span标签,第一个包含字符"›",后面的一个包含{{ var }}。变量在浏览器中被打印成"{{ var }}",而不是"val",但当我将第一个span内容更改为其他任何内容时,{{ var }}可以正常渲染为"val"。
我尝试使用HTML实体(›),但依然无法解决。我尝试了几种其他的HTML实体,它们都可以正常工作。
看起来这是针对这个特定字符的问题。有人知道这是为什么吗?
以下是代码:
span.rsaquo  
span.subcategory  {{ category.subname }}

这里是输出结果:

在这里输入图片描述


你能提供脚本代码吗? - Shaxrillo
1
作为一种解决方法,您可以使用任何一个 ❭ ❯ ❱ ➢ ➣ ➤ 〉 ▸ ► ▹ ▻ ⊳ ⋗ ⩺ ⩥ ⪢ ⪧ ⫸ ⦆ ⦊ ⦔ ⧽ 等符号。 - Mr Lister
@Shaxrillo,实际上没有任何脚本代码,但该变量在Angular控制器中肯定被定义了。 - jmchargue
4
不确定根本原因是什么,但我们发现通过使用content-before字段可以找到一种解决方法:span::before { content: "&rsaquo"; } - philipkd
1
我尝试了一下,但无法重现这个问题。不过,你的问题似乎类似于这个问题,https://github.com/angular/angular.js/issues/10835。你使用的是哪个版本的Angular? - Montri M
显示剩余5条评论
2个回答

3

我曾遇到过在我的代码中直接使用双尖括号字符时出现的问题,也发现了在使用 ndash 字符时出现的问题。我找到的解决方案是在任何你想使用这些奇怪字符的地方使用 ng-bind-template 属性。

<span ng-bind-template="rsaquo >">
    <span>{{category.subname}}</span>
</span>

或者

<span ng-bind-template="rsaquo >">
    <span ng-bind="category.subname"></span>
</span>

根本问题是IE会停止处理带有这些字符的DOM元素上的javascript代码(虽然我不确定为什么)。它被限制在只处理包含该字符的元素和其子元素内部。

只有当字符直接出现在HTML中并且页面正在加载时,才会发生此问题。这就是为什么如果将其放置在ng-bind-template指令中,IE将在所有内容加载完毕并且处理了所有内容之后再看到它。


0
span.rsaquo  ›

您输入了空格,请尝试不加空格输入:

span.rsaquo›

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接