仅允许TinyMCE中的外部链接

时间:2015-10-05 10:08:44

标签: javascript tinymce tinymce-4

我在我的网络应用程序中使用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按钮并确认时,会显示此弹出窗口

enter image description here

我的目标是避免显示此弹出窗口并仅使用http://前缀链接。

我正在使用tinyMCE的最新版本。

据我所知,relative_urls选项不适合我的必需品。

有什么想法吗?

3 个答案:

答案 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”,