• Композитный сайт и $frame->beginStub()?

    winer
    @winer
    занимаюсь разработкой сайтов на 1c-bitrix
    Чтобы разобраться в проблеме надо понимать как работает композит.
    Вот так размечается динамический контент и его заглушка внутри шаблона компонента:
    $frame = new \Bitrix\Main\Page\FrameBuffered("my_dynamic"); 
    $frame->begin();
      // Содержание динамической области
    $frame->beginStub();
      // Заглушка
    $frame->end();

    При первоначальной загрузке страницы, браузер получает HTML в котором отсутствует динамический контент. На его месте находятся заглушки.
    После загрузки страницы у Вас выполняется JS скрипт, который навешивает обработчик на вашу кнопку. Но кнопка у вас из заглушки.
    После уже сам Битрикс загружает на место заглушки динамический контент. В DOM модели это будет уже другая кнопка и на ней не будет вашего обработчика.

    Поэтому Вам надо либо инициализировать обработчик из динамической области, либо изначально вешать событие не на саму кнопку. Например в jQuery это можно сделать так
    $(document).on('click', '.header__link.header__link--auth', callback);
    Ответ написан
    Комментировать