【问题标题】:Froala - get HTMLFroala - 获取 HTML
【发布时间】:2016-12-19 05:27:16
【问题描述】:

我正在尝试使用 Froala 2.4 从元素中获取当前 HTML
我的主要原因是能够将原始 HTML 与新 HTML 进行比较,以查看用户是否更改了任何内容,以及这种情况是否会触发保存事件。

这是我当前的代码

console.log($(this).froalaEditor('html.get'))    
console.log($(this).data('froala.editor')._original_html);    

这是输出

<p spellcheck="false">TestString<b>Edited</b></p>
TestString<b>Original</b>

问题是我只想从第一个输出中检索它:

 TestString<b>Edited</b>

(在本例中,我不希望包含段落标签)

我可以创建一个简短的函数来为我处理这个问题,但对于我从 Froala 获取字符串的方式,我似乎遗漏了一些非常明显的东西。

非常感谢您的帮助!

【问题讨论】:

  • 我已经更新了我的答案,假设您只需要删除顶级 &lt;p&gt; 标签。

标签: javascript html froala


【解决方案1】:

您可能需要将编辑器的内容存储在某处:

var html = $(this).froalaEditor('html.get'); // <p spellcheck="false">TestStringEdited</p>

然后去掉 HTML 标签,如果我没听错的话。最简单的方法是jQuery .text() method

var text = $( html ).text(); // TestStringEdited

更新

您只需要去除上层&lt;p&gt; 标签对吗?这是一个借助 jQuery 实现过滤标签的函数。但是您可以重写它并制作一个排除标记数组,或者在内容的每个子元素上递归调用它。此外,您可以使用正则表达式作为替代。

function stripParagraphs( html ) {
  var r = '';

  $( html ).each(function() {

    // test each higher-level tag to be <p>
    if ($( this ).prop( 'tagName' ) === 'P') {
      r += $( this ).html(); // add contents of <p> to result

    } else {
      r += this.outerHTML; // add the whole element to result
    }
  })

  return r;
}

Live example.

另一个更新

剥离所有顶级标签。

function stripTopLevelTags( html ) {
  var r = '';
  $( html ).each( function() {
    r += $( this ).unwrap().html();
  });
  return r;
}

Live example

【讨论】:

  • 对于这种情况来说,这是一个可行的替代方案,我会在一分钟内稍微编辑一下这个问题!我仍然需要它是 HTML。
  • 感谢您的更新,我现在会坚持使用它,(它并不总是一个 p-tag),我使用以下命令将其更新为一行:alert($(html).first( ).remove().html());除非出现更好的解决方案,否则我会在几个小时内接受您的回答!非常感谢!
  • @Tombina 好吧,那条线不适用于多个顶级元素,但你知道得更好:) 祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
  • 2020-12-14
  • 2021-10-24
  • 1970-01-01
相关资源
最近更新 更多