2013-07-23 1 views
0

Я использую CKEditor и я устанавливаю базовый путь редактора, установив глобальную переменную с именем CKEDITOR_BASEPATH так:Доступ к элементу DOM атрибут установить глобальную переменную

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

Теперь мой вопрос, является безопасно ли доступ к атрибуту dash данных элемента DOM таким образом? Я делаю это так, потому что я стараюсь избегать жесткого кодирования моего URL-адреса в моем файле сценария, и я не могу поместить его внутри функции jquery ready, поскольку CKEditor требует, чтобы она была глобальной переменной. Он работает прямо сейчас в моем локальном, но я не уверен, что это может вызвать проблему позже.

+0

Поскольку я не работаю внутри функции dom dom, мне интересно, доступен ли элемент dom, к которому я обращаюсь, уже доступен. – user2533730

ответ

0

Ваш подход является рискованным, поскольку он предполагает, что:

  1. JQuery уже загружен.
  2. Элемент id="ckeditor" уже разобран.
  3. 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> 

... и проблема решена.

Я делаю это так, потому что я пытаюсь избежать жесткого кодирования моего URL

Ничто не жёстко с этим подходом. Никаких проблем с порядком вещей. Больше не стоит беспокоиться о DOM.

P.S.: Проблема у вас есть в официальном developers guide.

Смежные вопросы