2

当我更改页面上的一些详细信息时,我需要能够更改 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 设置正确,但不影响提交值。似乎配置值已缓存。

有没有办法即时更改配置值?

4

2 回答 2

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上填写问题。

于 2012-06-18T20:28:52.537 回答
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。不理想,但它适用于我的目的:)

于 2012-06-19T06:25:39.783 回答