访问DOM元素属性以设置全局变量

时间:2013-07-23 14:39:55

标签: jquery ckeditor

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

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

现在我的问题是,以这种方式访问​​DOM元素的数据短划线属性是否安全?我这样做是因为我试图避免在我的脚本文件中对我的URL进行硬编码而且我不能把它放在jquery ready函数中,因为CKEditor要求它应该是一个全局变量。它现在在我的本地工作,但我不确定这是否会导致问题。

1 个答案:

答案 0 :(得分:0)

您的方法存在风险,因为它假设:

  1. jQuery已经加载。
  2. id="ckeditor"的元素已被解析。
  3. CKEditor尚未使用CKEDITOR_BASEPATH变量。
  4. 很多限制。不同的浏览器可能在这里做不同的事这很难说,因为您没有提供任何有关如何脚本加载(静态或动态?)以及订单的信息。尽管如此,我认为解决方案非常简单,因为您的代码表明该元素看起来像:

    <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中描述了您遇到的问题。