Разработчики 1с-Битрикс максимально упростили использование режима ajax в своем продукте — все подходящие элементы (ссылки, кнопки форм и т.д) в шаблоне компонента автоматически дополняются javascript-обработчиками. Иногда же возникает необходимость «отменить» ajax для какой-либо ссылки. Сейчас я рассмотрю несколько способов, как такое можно реализовать.

Переход по ссылке будет осуществлен без технологии ajax, если выполнено одно из условий:

1. Наличие внутри тега <a> атрибутов «onclick» и «target». Отмечу, что target для ссылок делает невалидным документ в doctype strict

2. Если содержимое атрибута «href» начинается с:
символа #, т.е. является якорем
mailto: — является адресом e-mail
javascript: — является скриптом или его вызовом

3. Ссылка содержит символы :// — подойдет любая абсолютная ссылка

4. Ссылка ведет на страницу, отличную от страницы вызова компонента. Правило действует с учетом ЧПУ. Например, если в разделе /news/ лежит комплексный новостной компонент, настроенный на ЧПУ с кодами секций и элементов, то любая ссылка /news/word1/word2/ будет обрабатываться в режиме ajax, т.к. «реальный» адрес страницы — /news/index.php?..

Информация почерпнута из исходных кодов файла component_ajax.php. Найти его можно в каталоге /bitrix/modules/main/classes/general/

Больше статей и материалов по web-разработке в tg-канале - подписывайтесь!

Подписаться в telegram

2 комментария “Ссылки и режим ajax в компонентах

  1. Владимир

    Алексей, вы бы привели примеры с работающими компонентами.
    Например интересует компонент регистрация или авторизация. С аякс уведомлениями о заполнености полей и аякс уведомлением об успешной регистрации.

Добавить комментарий

Ваш адрес email не будет опубликован.