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

时间:2014-07-31 12:15:48

标签: dart polymer dart-polymer

我的同事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;
  }
}

1 个答案:

答案 0 :(得分:2)

<强>更新

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


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

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