0

我正在使用 CKEditor,我正在通过设置名为 CKEDITOR_BASEPATH 的全局变量来设置编辑器的基本路径,如下所示:

var CKEDITOR_BASEPATH = $('#ckeditor').data('basepath');

现在我的问题是,以这种方式访问​​ DOM 元素的 data dash 属性是否安全?我这样做是因为我试图避免在我的脚本文件中对我的 URL 进行硬编码,并且我不能真正将它放在 jquery 就绪函数中,因为 CKEditor 要求它应该是一个全局变量。它现在在我的本地工作,但我不确定这是否会在以后引起问题。

4

1 回答 1

0

您的方法是有风险的,因为它假设:

  1. jQuery 已经加载。
  2. 的元素id="ckeditor"已经被解析。
  3. CKEditor 尚未使用该CKEDITOR_BASEPATH变量。

很多约束。不同的浏览器在这里可能会做不同的事情。很难说,因为您没有提供有关如何加载脚本(静态或动态?)以及order的任何信息。不过,我猜该解决方案非常简单,因为您的代码表明该元素看起来像:

<element id="ckeditor" data-basepath="there/is/your/path" />

...并且由于它在模板中呈现或多或少类似于以下内容(假设是 PHP):

<element id="ckeditor" data-basepath="<?php echo $path ?>" />

...您为什么不在<script>模板顶部(in <head>)呈现正确的标签呢?

<script type="text/javascript">
    var CKEDITOR_BASEPATH = '<?php echo $path ?>';
</script>

……问题就解决了。

我这样做是因为我试图避免对我的 URL 进行硬编码

这种方法没有硬编码。事情的顺序没有问题。不再担心 DOM。

PS:您遇到的问题在官方开发者指南中有描述。

于 2013-07-24T08:37:26.583 回答