焦点/单击时CKEditor更改配置设置

时间:2012-06-16 17:49:04

标签: javascript jquery ckeditor

当我更改页面上的一些细节时,我需要能够更改CKEditor的filebrowserUploadUrl,因为我传递的自定义上传过程使用了我传递的查询字符串。

我正在使用JQuery插件。这是我的代码:

$('#Content').ckeditor({
    extraPlugins: 'autogrow',
    autoGrow_maxHeight: 400,
    removePlugins: 'resize'
});

$("#Content").ckeditorGet().on("instanceReady", function () {
    this.on("focus", function () {
        // Define browser Url from selected fields
        this.config.filebrowserUploadUrl = filebrowserUploadUrl: '/my-path-to-upload-script/?ID1=' + $("ID1").val() + '&ID2=' + $("#ID2").val();
    });
});

第一次工作正常,但如果我退出对话并更改#ID1和#ID2的值,它会保留以前的值。调试时,filebrowserUploadUrl设置正确,但不影响提交值。似乎缓存了配置值。

有没有办法动态更改配置值?

2 个答案:

答案 0 :(得分:1)

目前我认为没有任何可能性在没有黑客攻击的情况下即时更改此URL。

查看http://dev.ckeditor.com/browser/CKEditor/trunk/_source/plugins/filebrowser/plugin.js#L306

element.filebrowser.url属性设置一次,您可以看到它上方的几行将再次重复使用。您可以尝试以某种方式找到此元素并重置此属性,但不能更深入地了解此插件的代码,我不知道如何。

第二个选项是将此行#L284更改为: url = undefined;

但是,我还没有检查这是否是正确的解决办法:)祝你好运!

顺便说一句。请随意填写http://dev.ckeditor.com上的问题。

答案 1 :(得分:0)

我通过在发生更改时重新加载编辑器来解决这个问题;我实际上浏览了浏览器插件的源代码等,但无法对工作进行任何更改(当然,我真的不想为将来的升级更改任何内容)。

function setFileBrowserUrl() {
    // Remove editor instance
    $("#Content").ckeditorGet().destroy();
    // Recreate editor instance (needed to reset the file browser url)
    createEditor();
}
function createEditor() {
    $('#Content').ckeditor({
        filebrowserUploadUrl: '/my-path-to-upload-script/?ID1=' + $("ID1").val() + '&ID2=' + $("#ID2").val(),
        extraPlugins: 'autogrow',
        autoGrow_maxHeight: 400,
        removePlugins: 'resize'
    });
}

然后每当页面上的相关元素发生变化时,我都会调用setFileBrowserUrl。不理想,但它适用于我的目的:)