dart – 有没有办法阻止HTML表达式中的HTML转义?

参见英文答案 >
How can I bind a text which contains url as html                                    1个

我的同事Patrick&我目前正在将自动完成组件从Web UI转换为Polymer.dart.在Web UI中,我们为自动完成提供了一个HTML呈现列表,以便为程序员提供设置结果样式的机会.根据输入值,我们过滤了列表并显示了匹配结果.

您建议在Polymer.dart中实现相同的行为?我们应该以完全不同的方式处理这个吗?

旧的Web UI代码:

<template iterate="entry in filteredEntries">
  <li class="b-autocomplete-results-li">{{ entry.sanitizedHtml }}</li>
</template>

一个条目的类:

class AutocompleteEntry {

  final String id;
  final String searchableText;
  final Element _element;

  AutocompleteEntry(this.id, this.searchableText, this._element) {
    // remove the data-id and data-text since we don't need them in the html
    _element.dataset.remove('text');
    _element.dataset.remove('id');
  }

  get sanitizedHtml {
    var validator = new NodeValidatorBuilder()..allowHtml5();
    var documentFragment = document.body.createFragment(_element.outerHtml, validator: validator);
    return documentFragment;
  }
}

最佳答案 更新

Dart Polymer 1.0的即用型元素是bwu-bind-html

不,没有.这是故意的,因为它容易发生XSS攻击.
你可以做的是使用像< safe-html>这样的元素.代替.

我对这个问题HTML Tags Within Internationalized Strings In Polymer.dart的回答显示了完整的源代码.

点赞