【问题标题】:Closure library dom node from html text从 html 文本中关闭库 dom 节点
【发布时间】:2012-09-07 13:02:15
【问题描述】:

我有一个像这样的 html 文本:

'<div class="a"><span>1</span><div>2</div></div>'

闭包库中是否有一个函数来获取这样的字符串作为输入并返回一个 DOM 树以插入到文档中?

【问题讨论】:

    标签: google-closure-library


    【解决方案1】:

    闭包库提供了函数goog.dom.safeHtmlToNode(html)从goog.html.SafeHtml对象创建文档片段(Node),可以使用goog.html.sanitizer.HtmlSanitizer创建,如下所示。

    示例

    <!doctype html>
    <html>
    <head>
      <title>Closure Library Dom Test</title>
      <script src="https://cdn.rawgit.com/google/closure-library/master/closure/goog/base.js"></script>
      <script>
        goog.require('goog.dom');
        goog.require('goog.html.SafeHtml');
        goog.require('goog.html.sanitizer.HtmlSanitizer');
      </script>
    </head>
    
    <body>
    <h1>Closure Library Dom Test</h1>
    
    <div id="main">
    </div>
    
    <script>
      var sanitizer = new goog.html.sanitizer.HtmlSanitizer.Builder().build();
      var fragment = goog.dom.safeHtmlToNode(
          sanitizer.sanitize('<div class="a"><span>1</span><div>2</div></div>'));
    
      goog.dom.append(/** @type {!Node} */(document.querySelector('#main')),
          /** @type {!Node} */(fragment));
    </script>
    
    </body>
    </html>
    

    【讨论】:

    • goog.dom.htmlToDocumentFragment(htmlString) 现已删除。有什么新方法吗?
    • @red_led 示例更新为使用goog.dom.safeHtmlToNode(html) 代替已删除的goog.dom.htmlToDocumentFragment。
    猜你喜欢
    • 2013-03-27
    • 2010-12-02
    • 2018-09-06
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    相关资源
    最近更新 更多