当我更改页面上的一些细节时,我需要能够更改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设置正确,但不影响提交值。似乎缓存了配置值。
有没有办法动态更改配置值?
答案 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。不理想,但它适用于我的目的:)