我正在向tinyMCE添加一个按钮,我想知道如何用javascript将文本包装在标签内(例如,这个突出显示的文本包含在[highlight][/highlight]
标签内)。
现在整个tinymce
(function() {
tinymce.create('tinymce.plugins.shoutButton', {
init : function(ed, url) {
ed.addButton('shout.button', {
title : 'shout.button',
image : 'viral.gif',
onclick : function() {
window.alert("booh");
});
},
createControl : function(n, cm) {
return null;
},
getInfo : function() {
return {
longname : "Shout button",
author : 'SAFAD',
authorurl : 'http://safadsoft.com/',
infourl : 'http://safadsoft.com/',
version : "1.0"
};
}
});
tinymce.PluginManager.add('shout.button', tinymce.plugins.ShoutButton);
})();
答案 0 :(得分:2)
您可以使用setSelectionRange(mozilla / webkit)或selection.createRange(IE)方法查找textarea中当前突出显示的文本。 我在jsfiddle上提供了一个示例,但是已经注释掉了你的正则表达式,因为它在许多情况下挂起了浏览器。你需要使它更具限制性,并且它目前还传递了许多其他东西,而不是youtube url。
但是,该示例有一个可行的解决方案,如何获取当前选定的文本,您可以在修复模式后应用于idPattern.exec()。
idPattern = /(?:(?:[^v]+)+v.)?([^&=]{11})(?=&|$)/;
// var vidId = prompt("YouTube Video", "Enter the id or url for your video");
var vidId;
el = document.getElementById('texty');
if (el.setSelectionRange) {
var vidId = el.value.substring(el.selectionStart,el.selectionEnd);
}
else if(document.selection.createRange()) {
var vidId = document.selection.createRange().text;
}
alert(vidId);
编辑:包装突出显示的文本并将其输出回元素。 example
el = document.getElementById('texty');
if (el.setSelectionRange) {
el.value = el.value.substring(0,el.selectionStart) + "[highlight]" + el.value.substring(el.selectionStart,el.selectionEnd) + "[/highlight]" + el.value.substring(el.selectionEnd,el.value.length);
}
else if(document.selection.createRange()) {
document.selection.createRange().text = "[highlight]" + document.selection.createRange().text + "[/highlight]";
}
答案 1 :(得分:1)
问题是语法错误,没有正确关闭括号和一些缺失的分号,使用了令人敬畏的Jsfiddle的JSHint和JSLint的帮助我修复了它:
(function () {
tinymce.create('tinymce.plugins.shoutButton', {
init: function (ed, url) {
ed.addButton('shout.button', {
title: 'shout.button',
image: 'viral.gif',
onclick: function () {
window.alert("booh");
}
});
createControl: function (n, cm) {
return null;
}
getInfo: function () {
return {
longname: "Shout button",
author: 'You !',
authorurl: 'http://example.com/',
infourl: 'http://example.com/',
version: "1.0"
};
}
}
});
tinymce.PluginManager.add('shout.button', tinymce.plugins.ShoutButton);
})();
最好的问候