Javascript 结束时隐藏非从属按钮<;预处理>;标签
我是TinyMCE的新手,但我成功地制作了一个按钮,它只是一个带有一些代码的Javascript 结束时隐藏非从属按钮<;预处理>;标签,javascript,tinymce,Javascript,Tinymce,我是TinyMCE的新手,但我成功地制作了一个按钮,它只是一个带有一些代码的标签 (function() { tinymce.PluginManager.requireLangPack('pre'); tinymce.create('tinymce.plugins.PrePlugin', { init : function(ed, url) { var t = this; t.ed
标签
(function() {
tinymce.PluginManager.requireLangPack('pre');
tinymce.create('tinymce.plugins.PrePlugin', {
init : function(ed, url) {
var t = this;
t.editor = ed;
ed.addCommand('mcePre', function() {
ed.windowManager.open({
file : url + '/dialog.htm',
width : 500 + parseInt(ed.getLang('pre.delta_width', 0)),
height : 300 + parseInt(ed.getLang('pre.delta_height', 0)),
inline : 1
}, {
plugin_url : url
});
});
ed.addButton('pre', {
title : 'pre.desc',
cmd : 'mcePre',
image : url + '/img/pre.gif'
});
ed.onNodeChange.add(function(ed, cm, n) {
cm.setActive('pre', n.nodeName == 'CODE');
if(n.nodeName == 'CODE') t._setDisabled(1);
else t._setDisabled(0);
var notEmptyNode = n.innerHTML.replace(new RegExp('<\/?[^>]+>', 'gi'), '').replace(new RegExp(' ', 'gi'), '').match(/.*?[\S].*?/);
if(notEmptyNode && n.nodeName != 'CODE')
cm.setDisabled('pre', true);
});
},
createControl : function(n, cm) {
return null;
},
getInfo : function() {
return {
longname : 'Pre plugin',
author : 'Marchenko Alexandr',
authorurl : 'http://webdiz.com.ua',
infourl : 'http://webdiz.com.ua',
version : "1.0"
};
},
_block : function(ed, e) {
var k = e.keyCode;
// Don't block arrow keys, pg up/down, and F1-F12
if (k == 46 || (k > 32 && k < 41) || (k > 111 && k < 124))
return;
if (e.preventDefault) {
e.preventDefault();
e.stopPropagation();
}
else {
e.returnValue = false;
e.cancelBubble = true;
}
return false;
},
_setDisabled : function(s) {
var t = this, ed = t.editor;
tinymce.each(ed.controlManager.controls, function(c) {
if(c.settings.cmd != 'mcePre') {
c.setDisabled(s);
}
});
if (s !== t.disabled) {
if (s) {
ed.onKeyDown.addToTop(t._block);
ed.onKeyPress.addToTop(t._block);
ed.onKeyUp.addToTop(t._block);
ed.onPaste.addToTop(t._block);
} else {
ed.onKeyDown.remove(t._block);
ed.onKeyPress.remove(t._block);
ed.onKeyUp.remove(t._block);
ed.onPaste.remove(t._block);
}
t.disabled = s;
}
}
});
// Register plugin
tinymce.PluginManager.add('pre', tinymce.plugins.PrePlugin);
})();
在那里,用户只能编写源代码,但是如果他们使用像bold
这样的按钮,那么它就会变为粗体
我一直在试图找到一种方法来禁用它,并且发现当你在一个特殊的标签上时可以禁用按钮
所以我想知道,如果有人知道这是怎么可能的
我有这个插件,下面是哪个例子:
如果你看这段视频,你会明白我的意思,他会在0:40
之后查看
标签
ed.onNodeChange.add(function(ed, cm, n) {
cm.setActive('pre', n.nodeName == 'PRE');
if(n.nodeName == 'PRE') t._setDisabled(1);
else t._setDisabled(0);
var notEmptyNode = n.innerHTML.replace(new RegExp('<\/?[^>]+>', 'gi'), '').replace(new RegExp(' ', 'gi'), '').match(/.*?[\S].*?/);
if(notEmptyNode && n.nodeName != 'PRE')
cm.setDisabled('pre', true);
});
您可以在此处看到插件文件的来源:
(函数(){
tinymce.PluginManager.requireLangPack('pre');
create('tinymce.plugins.PrePlugin',{
init:函数(ed,url){
var t=这个;
t、 编辑=编辑;
ed.addCommand('mcePre',function(){
ed.windowManager.open({
文件:url+'/dialog.htm',
宽度:500+parseInt(ed.getLang('pre.delta_width',0)),
高度:300+parseInt(ed.getLang('pre.delta_height',0)),
内联:1
}, {
插件url:url
});
});
ed.addButton('pre'{
标题:“pre.desc”,
cmd:'mcePre',
图片:url+'/img/pre.gif'
});
ed.onNodeChange.add(函数(ed,cm,n){
cm.setActive('pre',n.nodeName=='CODE');
如果(n.nodeName=='CODE')t.(设置已禁用(1);
否则t._设置被禁用(0);
var notEmptyNode=n.innerHTML.replace(新正则表达式(']+>,'gi'),'').replace(新正则表达式(''gi'),'').match(/.?[\S].*?/);
if(notEmptyNode&&n.nodeName!=“CODE”)
cm.setDisabled('pre',true);
});
},
createControl:函数(n,cm){
返回null;
},
getInfo:function(){
返回{
longname:'预插件',
作者:“Marchenko Alexandr”,
作者URL:'http://webdiz.com.ua',
infourl:'http://webdiz.com.ua',
版本:“1.0”
};
},
_块:功能(ed,e){
var k=e.keyCode;
//不要阻止箭头键、pg up/down和F1-F12
如果(k==46 | | |(k>32&&k<41)| |(k>111&&k<124))
返回;
如果(如默认){
e、 预防默认值();
e、 停止传播();
}
否则{
e、 returnValue=false;
e、 取消气泡=真;
}
返回false;
},
_setDisabled:功能已禁用{
var t=this,ed=t.editor;
tinymce.each(ed.controlManager.controls,function(c){
如果(c.settings.cmd!=“mcePre”){
c、 设置为禁用(s);
}
});
如果(s!==t.禁用){
若有(s){
ed.onKeyDown.addToTop(t.\U块);
ed.onKeyPress.addToTop(t.\U块);
ed.onKeyUp.addToTop(t.\U块);
ed.onPaste.addToTop(t.\U块);
}否则{
ed.onKeyDown.移除(t._块);
拆下(t._块);
拆除(t.U块);
ed.onPaste.remove(t.\U块);
}
t、 禁用=s;
}
}
});
//注册插件
add('pre',tinymce.plugins.PrePlugin);
})();
我发现了
这是执行以下操作的代码:
ed.onNodeChange.add(函数(ed,cm,n){
cm.setActive('pre',n.nodeName=='pre');
如果(n.nodeName==“PRE”)t.(设置已禁用(1);
否则t._设置被禁用(0);
var notEmptyNode=n.innerHTML.replace(新正则表达式(']+>,'gi'),'').replace(新正则表达式(''gi'),'').match(/.?[\S].*?/);
if(notEmptyNode&&n.nodeName!=“PRE”)
cm.setDisabled('pre',true);
});
将PRE
更改为应该为其设置的任何标记,但它会禁用所有按钮,只有活动按钮保持不变,但也不能写入任何文本