-1

我在 SharePoint 2007 中有一个摘要单行文本列,它是多行文本列的截断。经过复杂的过程到达那里,它变成了文本,然后需要转换回HTML,这样标签<div>就不会显示出来。如果多行列是富文本,则以下代码有效,但如果它是增强富文本,则无效。有没有人有方便的代码来完成这项工作?(注意:我正在研究它,但到目前为止还没有真正做过任何 javascript,所以进展缓慢)。

<script type="text/javascript">
  var theTDs = document.getElementsByTagName("TD");
  var i=0;
  var TDContent = " ";
  while (i < theTDs.length)
  {
    try
    {
      TDContent = theTDs[i].innerText || theTDs[i].textContent;
      if (TDContent.indexOf("<div") == 0)
        {
          theTDs[i].innerHTML = TDContent;
        }
    }
  catch(err){}
  i=i+1;
  }
</script>

我现在得到的结果是不可见的,因为使用增强的富文本,div 标签比我的 45 个字符截断限制长。

4

2 回答 2

2

如何使用 Christophe 的技术使用计算列输出 HTML

具体来说,他编写了将编码的 HTML(您现在已经拥有)转换为 HTML 的 javascript。

将以下内容添加到同一页面上的内容编辑器 Web 部件 (CEWP)。

<script type="text/javascript">
/*
Text to HTML Lite - version 2.1.1
Questions and comments: Christophe@PathToSharePoint.com
*/

function TextToHTML(NodeSet, HTMLregexp) {
   var CellContent = "";
   var i=0;
   while (i < NodeSet.length)
   {
      try 
      {
         CellContent = NodeSet[i].innerText || NodeSet[i].textContent;
         if (HTMLregexp.test(CellContent)) 
            { NodeSet[i].innerHTML = CellContent; }
      } 
      catch(err)
      {}

      i=i+1;
   }
}

// Calendar views
var regexpA = new RegExp("\\s*<([a-zA-Z]*)(.|\\s)*/\\1?>\\s*");
TextToHTML(document.getElementsByTagName("a"),regexpA);

// List views
var regexpTD = new RegExp("^\\s*<([a-zA-Z]*)(.|\\s)*/\\1?>\\s*$");
TextToHTML(document.getElementsByTagName("TD"),regexpTD);

</script>
于 2010-07-19T09:53:15.163 回答
2

我已经从下面的链接修改了 TextToHTML 代码,源是 PathToSharePoint.com 并且我添加了一个事件侦听器,它在 IE 兼容模式下成功地在 SharePoint 2016 上运行,它作为 IE10 和 Chrome 最新版本运行:Sharepoint 2010 中的文本到 Html 转换

<script type="text/javascript">
  /*
  Text to HTML Lite - version 2.1.1
  Questions and comments: Christophe@PathToSharePoint.com
  */
  document.addEventListener("DOMContentLoaded", function() {
    function TextToHTML(NodeSet, HTMLregexp) {
      var CellContent = "";
      var i = 0;
      while (i < NodeSet.length) {
        try {
          CellContent = NodeSet[i].innerText || NodeSet[i].textContent;
          if (HTMLregexp.test(CellContent)) {NodeSet[i].innerHTML = CellContent;}
        }
        catch (err) {}
        i = i + 1;
      }
    }

    // Calendar views
    var regexpA = new RegExp("\\s*<([a-zA-Z]*)(.|\\s)*/\\1?>\\s*");
    TextToHTML(document.getElementsByTagName("a"), regexpA);

    // List views
    var regexpTD = new RegExp("^\\s*<([a-zA-Z]*)(.|\\s)*/\\1?>\\s*$");
    TextToHTML(document.getElementsByTagName("TD"), regexpTD);

    // This function is call continuesly every 100ms until the length of the main field changes
    // after which the convert text to HTML is executed.
    var postElemLength = 0;
    function PostConvertToHtml() {
      if (postElemLength == document.getElementsByTagName("TD").length) {
        setTimeout(PostConvertToHtml, 100);
      }
      else {
        var regexpTD = new RegExp("^\\s*<([a-zA-Z]*)(.|\\s)*/\\1?>\\s*$");
        TextToHTML(document.getElementsByTagName("TD"), regexpTD);
      }
    }

    // Grouped list views
    ExpGroupRenderData = (function(old) {
      return function(htmlToRender, groupName, isLoaded) {

        var result = old(htmlToRender, groupName, isLoaded);
        var regexpTD = new RegExp("^\\s*<([a-zA-Z]*)(.|\\s)*/\\1?>\\s*$");
        TextToHTML(document.getElementsByTagName("TD"), regexpTD);
      };
    })(ExpGroupRenderData);

    // Preview pane views
    if (typeof (showpreview1) == "function") {
      showpreview1 = (function(old) {
        return function(o) {
          var result = old(o);
          var regexpTD = new RegExp("^\\s*<([a-zA-Z]*)(.|\\s)*/\\1?>\\s*$");
          TextToHTML(document.getElementsByTagName("TD"), regexpTD);
        };
      })(showpreview1);
    }
  });
</script>
于 2019-11-25T23:56:23.313 回答