Передача параметров в Javascript

Главные вкладки

Аватар пользователя zheka2 zheka2 15 июня 2016 в 11:06

Здравствуйте

Столкнулся с проблемой
Передаю параметры в js

<?phpif ($user->uid == 1) {
  $dashop_settings["update_loop"] = true;
}
drupal_add_js(array('dashop' => $dashop_settings), 'setting');?>

в самом скрипте есть кусок:

if ( Drupal.settings.dashop.update_loop == "true") {
  //action
}

В таком варианте перестаёт работать IMCE (ниже вложение), т.е. пропадают кнопки в панели, не работает предпросмотр и вообще любые действия

Как только я комментирую условие "Drupal.settings.dashop.update_loop == "true"" то все начинает работать. В отладчике смотрел, переменная такая есть. Из-за чего это может быть?

ВложениеРазмер
Иконка изображения snimok.png9.44 КБ

Комментарии

Аватар пользователя sergeybelya sergeybelya 15 июня 2016 в 13:33

попробуйте строгое равенство ===, но может дело не в этом? Если в консоли нет ошибок js, то может причина в самом теле вашего if?

Аватар пользователя zheka2 zheka2 15 июня 2016 в 13:44

Спасибо за совет

Строгое равенство пробовал. Ещё пробовал так
typeof Drupal.settings.dashop.update_loop !== "undefined"
но безрезультатно

«может причина в самом теле вашего if»
Тела нет, всё закомментировано, в консоль ошибки не выводятся.

Если убрать обращение к update_loop то всё начинает работать

if ( typeof Drupal.settings.dashop !== "undefined") {
  // action
}
Аватар пользователя sergeybelya sergeybelya 15 июня 2016 в 15:45

У вас эта переменная добавляется только для юзера с id = 1, а во всех остальных случаях вы передаете неопределенную переменную, возможно в этом баг? Добавьте проверку на существования свойства объекта в JS.

Аватар пользователя zheka2 zheka2 15 июня 2016 в 20:48

Спасибо, вы верно заметили что для других пользователей она будет неопределена, это я поправлю.
Но в данном случае я работаю под админом, при пошаговом выполнении видно что update_loop содержит true.

Аватар пользователя sergeybelya sergeybelya 15 июня 2016 в 22:56

Интересная проблема, если пришлете доступы в личку, постараюсь посмотреть, так сложно гадать конечно что у вас не так.

Аватар пользователя zheka2 zheka2 16 июня 2016 в 12:01

Аааа..
И почему я не догадался открыть лог окна IMCE, всё смотрел в родительском окне...

параметры в js я передаю в хуке hook_preprocess_page, получается он для imce не вызывается

Спасибо! Smile