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

Jquery 访问DOM元素属性以设置全局变量,jquery,ckeditor,Jquery,Ckeditor,我使用的是CKEditor,我通过如下方式设置名为CKEditor\U BASEPATH的全局变量来设置编辑器的基本路径: var CKEDITOR_BASEPATH = $('#ckeditor').data('basepath'); 现在我的问题是,以这种方式访问DOM元素的data-dash属性安全吗?我这样做是因为我试图避免在脚本文件中硬编码我的URL,并且我不能将其放入jquery ready函数中,因为CKEditor要求它应该是一个全局变量。我所在的地区目前正在运行,但我不确定这

我使用的是CKEditor,我通过如下方式设置名为CKEditor\U BASEPATH的全局变量来设置编辑器的基本路径:

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

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

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

  • jQuery已经加载
  • 已分析
    id=“ckeditor”
    的元素
  • CKEditor尚未使用
    CKEditor\u BASEPATH
    变量
  • 有很多限制。不同的浏览器在这里可以做不同的事情。很难说,因为您没有提供有关如何加载脚本(静态还是动态?)以及顺序的任何信息。尽管如此,我认为解决方案非常简单,因为您的代码表明元素如下所示:

    <element id="ckeditor" data-basepath="there/is/your/path" />
    
    
    
    …由于它在模板中呈现的方式大致如下(假设为PHP):

    ”;
    
    …问题就解决了

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

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


    p.S.:您遇到的问题已在官方文件中描述。

    由于我没有在dom就绪函数中操作,我想知道我正在访问的dom元素是否已经可以访问。
    <element id="ckeditor" data-basepath="<?php echo $path ?>" />
    
    <script type="text/javascript">
        var CKEDITOR_BASEPATH = '<?php echo $path ?>';
    </script>