给你:
(function($) {
tinymce.create('tinymce.plugins.fixinsertlinks', {
init : function(editor, url) {
editor.on('keydown', function(event) {
var ignoredKeys = [8,46,37,38,39,40,27,16,17,18,91,9,20,121,122,123];
if ($.inArray(event.keyCode, ignoredKeys) == -1) {
var node = editor.selection.getNode();
var a = editor.dom.getParent(node, 'a');
var b = editor.dom.getParent(node, 'b');
var i = editor.dom.getParent(node, 'i');
var a_is_parent_of_b = editor.dom.getParent(b, 'a');
var a_is_parent_of_i = editor.dom.getParent(i, 'a');
var b_is_parent_of_i = editor.dom.getParent(i, 'b');
var i_is_parent_of_b = editor.dom.getParent(b, 'i');
var element = false;
if (a) {
element = a;
if (b && !a_is_parent_of_b) {
element = b;
if (i && i_is_parent_of_b) {
element = i;
}
}
if (i && !a_is_parent_of_i) {
element = i;
if (b && b_is_parent_of_i) {
element = b;
}
}
} else if (b) {
element = b;
if (i && i_is_parent_of_b) {
element = i;
}
} else if (i) {
element = i;
if (b && b_is_parent_of_i) {
element = b;
}
}
if (element) {
var $caretPlaceholder = $('<span id="caret_placeholder"> </span>');
editor.dom.insertAfter($caretPlaceholder, element);
editor.selection.select(editor.dom.select('span#caret_placeholder')[0]);
editor.dom.remove(editor.dom.select('span#caret_placeholder')[0]);
}
}
});
},
getInfo: function() {
return {
longname : 'Move cursor outside of links',
author : 'Me',
authorurl : 'http://stackoverflow.com/questions/23700597/dragging-hyperlink-and-then-typing-new-text-includes-new-text-in-hyperlink',
infourl : '',
version : "2.0"
};
}
});
tinymce.PluginManager.add('fixinsertlinks', tinymce.plugins.fixinsertlinks);
})(jQuery);
这是一个有效的小提琴:http://fiddle.tinymce.com/Ugeaab/2
尝试从左侧边栏中拖动任何链接(例如底部的“反馈”链接),您现在可以非常轻松地在不属于链接的链接之后添加自己的文本。
这个插件修复了任何浏览器上的问题。要编辑链接的文本,只需单击工具栏中的链接按钮。
干杯!
已编辑:
要使用此插件,请确保在页面的任何位置(甚至在单独的文件中)包含上述 javascript,并在初始化 TinyMCE 时将其添加到插件列表(其名称为 fixinsertlinks)。有关使用自定义插件初始化 TinyMCE 的更多详细信息,请参阅示例小提琴。