我正在使用CKEditor,我通过设置名为CKEDITOR_BASEPATH的全局变量来设置编辑器的基本路径:
var CKEDITOR_BASEPATH = $('#ckeditor').data('basepath');
现在我的问题是,以这种方式访问DOM元素的数据短划线属性是否安全?我这样做是因为我试图避免在我的脚本文件中对我的URL进行硬编码而且我不能把它放在jquery ready函数中,因为CKEditor要求它应该是一个全局变量。它现在在我的本地工作,但我不确定这是否会导致问题。
答案 0 :(得分:0)
您的方法存在风险,因为它假设:
id="ckeditor"
的元素已被解析。CKEDITOR_BASEPATH
变量。很多限制。不同的浏览器可能在这里做不同的事这很难说,因为您没有提供任何有关如何脚本加载(静态或动态?)以及订单的信息。尽管如此,我认为解决方案非常简单,因为您的代码表明该元素看起来像:
<element id="ckeditor" data-basepath="there/is/your/path" />
...因为它在模板中的呈现方式或多或少与以下相似(让我们假设是PHP):
<element id="ckeditor" data-basepath="<?php echo $path ?>" />
...为什么不在模板顶部(<script>
)呈现正确的<head>
标记呢?
<script type="text/javascript">
var CKEDITOR_BASEPATH = '<?php echo $path ?>';
</script>
......问题解决了。
我这样做是因为我试图避免硬编码我的网址
这种方法没有任何硬编码。没有问题的顺序。不再担心DOM。
P.S。:官方developers guide中描述了您遇到的问题。