【问题标题】:Remove background color and font color in HTML with Javascript使用 Javascript 删除 HTML 中的背景颜色和字体颜色
【发布时间】:2014-05-09 09:56:41
【问题描述】:

我正在改进 TinyMCE 编辑器,并希望在前景色和背景色中添加按钮默认颜色。这就是我如何获得具有随机背景颜色样式的选定文本:

outer = tinyMCE.activeEditor.selection.getNode().outerHTML;

例如,可能是这样的:

<p style="font-size: 18px;"> 
    sadasdasdsasdasda
    <span style="background-color: rgb(0, 255, 0);" data-mce-style="background-color: #00ff00;">sdasdasda</span>
    <span style="background-color: rgb(255, 0, 0);" data-mce-style="background-color: #ff0000;">
        <span style="background-color: rgb(0, 255, 0);">sdasd</span>
        asdasdasdas
    </span>
    dasdasd
</p> 

我已经在 jQuery 中尝试过.each,但没有成功。这是实际的代码:

$(outer).each(function() {
    $(this).css({'background-color': 'transparent'});
});

我不是 Javascript 方面的大师,也不是 jQuery 方面的大师。我该怎么做才能从outer 中删除所有background-color

【问题讨论】:

  • 您可以在 jquery 中使用添加和删除类。您必须为特定类存储 css 属性
  • 您的意思是,例如 class: .transparentText 其中包含空颜色,然后单击添加类?这会起作用,但是当用户选择其他文本并且旧文本将在选定的new 文本中时,它会起作用吗?
  • 你能为此创建一个 tinymce 小提琴吗? (fiddle.tinymce.com)
  • 我会尝试“克隆”它,但我不这样做。是公司项目,这个编辑器被编辑了很多次,现在我们需要整合这个,我的任务。

标签: javascript jquery tinymce


【解决方案1】:

这样使用

$("*").each(function () {
    $(this).css('background-color', 'transparent');
});

Demo

编辑

 var a='<p style="font-size: 18px;">sadasdasdsasdasda<span style="background-color: rgb(0, 255, 0);" data-mce-style="background-color: #00ff00;">sdasdasda</span><span style="background-color: rgb(255, 0, 0);" data-mce-style="background-color: #ff0000;"><span style="background-color: rgb(0, 255, 0);">sdasd</span>asdasdasdas</span>dasdasd</p>';
var outer=$(a);
outer.find("*").css('background-color','transparent');
$("div").append(outer);

Updated Fiddle

【讨论】:

  • 但这会改变整个文档中的每个背景颜色。我只需要更改所选文本的背景颜色,即存储在外部变量中的内容。
  • 抱歉回复晚了,我在吃午饭。现在似乎更好了,我会尝试将它应用到我的脚本上。当它起作用时,我会接受你的回答。
  • 看自己的答案,终于找到解决办法了。
【解决方案2】:

只需要插件中的编辑功能(plugins/textcolor/plugin.js)。然后结果将是:

function onPanelClick(e) {
   var buttonCtrl = this.parent(), value;

   if ((value = e.target.getAttribute('data-mce-color'))) {
      buttonCtrl.hidePanel();
      buttonCtrl.color(value););
      if (value == 'transparent') {
         tinyMCE.execCommand("RemoveFormat");
      } else {
         editor.execCommand(buttonCtrl.settings.selectcmd, false, value);
      }
   }
}

之后,还需要编辑tinymce.js。只需编辑removeformat,例如:

removeformat: [
   {selector: 'span', styles: ['background-color'], remove: 'empty', split: true, expand: false, deep: true}
]

(FOR OTHER USERS) 为面板添加新颜色,将此代码插入函数renderColorPicker(),建议在循环之前:

function renderColorPicker() {
   ...

   html += '<tr>';
   html += (
      '<td colspan="' + cols + '">' +
         '<div id="' + ctrl._id + '-00" class="color-box"' +
         ' data-mce-color="transparent"' +
         ' role="option"' +
         ' tabIndex="-1"' +
         ' style="background-color: transparent"' +
         ' title="Default color">' +
         '<span>Default color</span></div>' +
      '</td>'
   );
   html += '</tr>';

   for (y = 0; y < rows; y++){
   ...

【讨论】:

    猜你喜欢
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 2020-01-15
    相关资源
    最近更新 更多