我正在使用基于 WYSIHTML5 ( https://github.com/xing/wysihtml5 ) 的 WYSIHTML5 Bootstrap ( http://jhollingworth.github.com/bootstrap-wysihtml5 ),从网站。
我希望能够将代码处理到编辑器中,然后使用 HighlightJS 突出显示语法。
我创建了一个新按钮并复制了 wysihtml5.js 中使用的方法来<b>
打开和关闭粗体,<pre>
而是使用:
(function(wysihtml5) {
var undef;
wysihtml5.commands.pre = {
exec: function(composer, command) {
return wysihtml5.commands.formatInline.exec(composer, command, "pre");
},
state: function(composer, command, color) {
return wysihtml5.commands.formatInline.state(composer, command, "pre");
},
value: function() {
return undef;
}
};
})(wysihtml5)
但这还不够。编辑器在编辑时隐藏标签。我需要能够将我的内容包装在两者中<pre>
,<code>
即。<pre><code></code></pre>
.
这意味着编写一个与 wysihtml5 使用的函数不同的函数,我不知道如何......有人可以帮我吗?
这是 wysihtml5 中 formatInline 函数的代码:
wysihtml5.commands.formatInline = {
exec: function(composer, command, tagName, className, classRegExp) {
var range = composer.selection.getRange();
if (!range) {
return false;
}
_getApplier(tagName, className, classRegExp).toggleRange(range);
composer.selection.setSelection(range);
},
state: function(composer, command, tagName, className, classRegExp) {
var doc = composer.doc,
aliasTagName = ALIAS_MAPPING[tagName] || tagName,
range;
// Check whether the document contains a node with the desired tagName
if (!wysihtml5.dom.hasElementWithTagName(doc, tagName) &&
!wysihtml5.dom.hasElementWithTagName(doc, aliasTagName)) {
return false;
}
// Check whether the document contains a node with the desired className
if (className && !wysihtml5.dom.hasElementWithClassName(doc, className)) {
return false;
}
range = composer.selection.getRange();
if (!range) {
return false;
}
return _getApplier(tagName, className, classRegExp).isAppliedToRange(range);
},
value: function() {
return undef;
}
};
})(wysihtml5);