我在我的网络应用程序中使用TinyMCE
,并允许人们在其中使用link
。
这是我的配置:
var editor = tinymce.init({
plugins: "link",
selector: this.$el.find("#shortdesc")["selector"],
toolbar: "bold italic | undo redo | link unlink",
link_list: [
],
menubar: false,
relative_urls: false,
link_assume_external_targets: true,
setup: function (editor) {
editor.on("change", function (e) {})
}
});
我想解决的问题是,我希望让人们只插入外部链接。在当前情况下,当用户单击link
按钮并确认时,会显示此弹出窗口
我的目标是避免显示此弹出窗口并仅使用http://
前缀链接。
我正在使用tinyMCE
的最新版本。
据我所知,relative_urls
选项不适合我的必需品。
有什么想法吗?
答案 0 :(得分:1)
实际上我解决了覆盖tinymce.editor.convertURL
function
setup: function (editor) {
var fn = editor.convertURL;
editor.convertURL = convertURL_;
function convertURL_(url, name, elm){
fn.apply(this, arguments);
console.log(arguments);
var regex = new RegExp("(http:|https:)?\/\/");
if (!regex.test(url)) {
return url = "http://" + url
}
return url;
}
}
答案 1 :(得分:1)
根据答案found here,我为您的问题编写了以下紧凑型解决方案:
editor.on('init',function(e) {
// reference to original windowManager function
var fn = editor.windowManager.open;
// override with your own version of the function
editor.windowManager.open = function(t,r){
// make sure you only target the 'insert link' dialog
if(t.title == 'Insert link'){
// reference to the subumit function of the dialog
var oldsubmit = t.onSubmit;
// override the submit function
t.onSubmit = function(e){
// append the "http://" prefix here, note that the URL is contained within the property 'href' of data.
// also see link/plugin.js
if(!e.data.href.match(/(ftp|https?):\/\//i)){
e.data.href = "http://" + e.data.href;
}
// submit original function
return oldsubmit(e);
}
// after overwriting the submit function within the windowManager, make sure to call the original function
fn.apply(this, [t,r]);
}
// use return instead of apply to prevent bugs in other dialogs
else{
return fn(t,r);
}
}
});
答案 2 :(得分:0)
您应该复制链接插件,将其重命名为“mylink”,调整所有引用以链接到mylink并修改代码,以便弹出窗口不会显示,并且链接URL将被检查为“https”/“ HTTP”,