首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tinyMCE简单语法突出显示

问tinyMCE简单语法突出显示
EN

Stack Overflow用户
提问于 2010-08-06 08:50:49
回答 1查看 1.3K关注 0票数 1

我希望在tinyMce编辑器中有一个简单的实时语法突出显示。我想为文本中的每个#{keyword}和#{more keywords}突出显示(更改文本的背景或颜色)。关键字只能包含字母、数字和点(.)。我不知道我的主意是否好:

  • 绑定到编辑器
  • 的onChange事件,删除<span class="code">#{keyword}</span> (Regex)
  • 的所有出现,查找all #{关键字},并将它们替换为#{find关键字}

(css类code的背景设置为某种颜色)

有什么办法解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-11 12:00:03

绑定到onChange事件似乎没问题,但是您应该考虑使用onKey--事件。我希望下面的代码片段将对您有所帮助:

css (在content_css中定义,即):

代码语言:javascript
复制
[current] {
background-color:yellow;
}
[changed] {
background-color:green;
}

js的帮助功能:

代码语言:javascript
复制
var select_current = function(node){
  unselect_current();
  node.setAttribute('current','true');
};

var unselect_current = function(){
  var n = ed.getBody().firstChild;
  while (n){
    if (n.nodeType == 1 && n.getAttribute('current'))
    {
      n.removeAttribute('current');
    }
    n = n.nextSibling;
  }
};

p_of = function(node) // returns p-Element of node
{
  while (node){
  if (node.nodeName == 'BODY') { return null; }
  if (node.nodeName == 'P')    { return node; }
    else { node = node.parentNode; }                    
  }
  return null;
}

事件电话:

代码语言:javascript
复制
var _node_changing = false;
console.log('onNodeChange: ', arguments);
if (!_node_changing && element.getAttribute('_mce_type') != 'bookmark'){
  _node_changing = true;
  var p = p_of(element);
  if (p){
    if (!p.getAttribute('current')){
    select_current(p);
    }               
  }
  _node_changing = false;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3422255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档