1

在自定义模块中,我包含了 CKEditor

drupal_add_js( 'sites/all/libraries/ckeditor/ckeditor.js',array('weight'=>JS_LIBRARY+1));
drupal_add_js( 'sites/all/libraries/ckeditor/adapters/jquery.js',array('weight'=>JS_LIBRARY+2));

在我的 JS 中,我现在使用在 textarea 上创建一个实例

jQuery('#myTextArea').ckeditor();

这有效,但现在不行。在 Firebug 中,我看到 ckeditor 正在尝试访问config.js,并且它正在页面的 URL 中寻找它。它应该寻找http://example.com/sites/all/libraries/ckeditor/

我想不出最近发生的变化可能会破坏它!

我尝试将配置传递{ basePath: '/sites/all/libraries/ckeditor/' }ckeditor()调用,但这被忽略了,可能无法在运行时设置它?

任何人都知道我做错了什么,或者如果这是一个错误,是否有解决方法?

4

2 回答 2

1

正如我评论的那样,这似乎与通过 Drupal 的 JS 聚合加载编辑器有关

这是一个对我有用的丑陋黑客。

编辑 sites/all/libraries/ckeditor/ckeditor.js 文件并在压缩的 js 代码之前添加:

window.CKEDITOR_BASEPATH = 'http://example.com/sites/all/libraries/ckeditor/';

然后记住每次升级时都这样做。

PS。归功于basepath提示

于 2013-09-10T12:34:16.177 回答
0

当您更改默认的 ckeditor.js 文件名时,CKEditor(已测试 4.4.4)在确定正确的基本路径时出现问题。例如,当您为实时部署添加缓存中断器或使用聚合名称时。

您可以使用以下属性的输出轻松重现该行为:CKEDITOR.basePath

您在一个路径为 /a/b/c/d 的网站(假设http://example.de)上,使用原始 ckeditor 文件名 /ext/ckeditor/ckeditor.js:

Website: http://example.de/a/b/c/d
CKeditor: http://example.de/ext/ckeditor/ckeditor.js

console.log(CKEDITOR.basePath); //output: http://example.de/ext/ckeditor/ 

您在同一个网站,相同的路径和 ckeditor.js 更改:

Website: http://example.de/a/b/c/d
CKeditor: http://example.de/ext/ckeditor/ckeditor-whatever.js

console.log(CKEDITOR.basePath); //output: http://example.de/a/b/c/ 

JavaScript 控制台通常会显示如下错误:

Line 1: Uncaught SyntaxError: Unexpected token <
Uncaught TypeError: Cannot set property 'dir' of undefined

因此,如果您更改默认文件名 ckeditor.js,则始终需要设置基本路径。

于 2014-10-29T10:06:53.920 回答