Javascript

Статьи, записки и заметки по теме Javascript

Проверка переменных в JS или аналог isset в PHP

mbaev 12.05.2017, 16:24
Tags

jsОх уж этот js... Сегодня снова пришлось углубиться в дебри JS и снова эти ужасные typeof и undefined... От одной мысли меня передёргивает. Мы же в 21ом веке живем!!! Что творится в javascript ?

  1. if (typeof window.var1 !== 'undefined' && typeof window.var1.var2 !== 'undefined' && typeof window.var1.var2.var3 !== 'undefined') {
  2.   // code
  3. }

Drupal ajax страницы без перезагрузки

mbaev 14.11.2016, 16:19

Это всего лишь мокап, который я накидал за 20 минут "на коленке" и он требует доработки, но уже сейчас этот js-скрипт позволит простым сайтам работать без перезагрузки страниц.

Для примера, можно сёрфить по нодам в блоге или переходить из редактирования ноды в режим просмотра ноды. В большей степени, продолжают корректно работать ajax-ссылки, созданные, например, с помощью views.

Запрет на исследование элементов в браузере

mbaev 11.11.2016, 11:08

disallow-to-debug

Этот js-сниппет запрещает "Исследовать элементы" на странице. Если быть точнее, при открытии браузерной консоли он циклически останавливает работу js-скрипта брекпоинтом, запрещая тем самым использовать селектор элементов.

Обновление представления (views) через ajax

mbaev 13.10.2016, 13:53

Заставить работать какую-либо вьюху с ajax не сложно. Достаточно зайти в настройки и установить параметр Use Ajax: Yes.
ajax-view

К сожалению, модуль Views не предоставляет JS API для программного обновления этой вьюхи. Поэтому, пишем свою функцию (комментарии в коде):

Изменение модального окна CTools

mbaev 12.05.2016, 07:52

Модуль CTools, был написан программистом по имени Earl Miles. Он так же написал такие модули Views, Panels и другие. CTools предоставляет большое количество вспомогательных функций, которые упрощают жизнь программисту. На текущий момент у модуля CTools нет официальной страницы с документацией.

Это описание одной из фич модуля CTools, а именно изменение модального окна.

Простой вариант

Темизируем любое окно, вызванное ссылкой/кнопкой.

Как переопределить поведение ajax-ссылки

mbaev 07.04.2016, 13:16

Многим известно, что в Drupal'е есть собственный ajax-фреймворк, который использует в качестве ответов, так называемые, команды. Сами запросы могут быть инициированы разными способами:

  1. Присвоив класс use-ajax на любой тэг (на стороне сервера или на стороне клиента, но перед инициализацией Drupal js части). В базовом использовании этого варианта есть обязательное условие - тэг должен иметь атрибут href содержащий путь, на который будет выполнен ajax запрос.
  2. Определив параметр #ajax в форме (на стороне сервера).
  3. Присвоив параметр use-ajax-submit форме (тэг form). Это что-то среднее между п.1 и п.2.
  4. Инициировав new Drupal.ajax() (на стороне клиента)

Изменение поведения ajax-обработчика

Рассмотрим пример с ссылкой, на которой есть класс use-ajax. Мы будет изменять состояние bootstrap кнопки на момент выполнения запроса - пример.
Наша вымышленная страница содержит такой тэг: