http://www.frostjedi.com/terra/dev/tinymce/test3.html
当我将“Sample Link”向下拖动到textarea然后开始输入新文本时,我输入的是超链接的一部分。关于如何改变这种行为的任何想法?即。所以新输入的文本不是超链接的一部分?
这个问题似乎只发生在Firefox而不是Chrome中。在Chrome中,拖动它时没有任何反应。
答案 0 :(得分:1)
你走了:
(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的更多详细信息,请参阅示例小提琴。