Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.12.2022, 21:23
Профессор
Отправить личное сообщение для ufaclub Посмотреть профиль Найти все сообщения от ufaclub
 
Регистрация: 27.11.2010
Сообщений: 202

заблокировать клик по ссылке до полной загрузки страницы
есть такой кусок кода (выкладываю его часть)

$(window).on('load', function() {

	
  $('.modal-catalog-item').on('show.bs.modal', function (e) {
	  
	  
    var $modal = $(this),
      $btn = $(e.relatedTarget);

    var id = $btn.data('catalog-item-id');

    $.ajax({
      url: '/inc/catalog/item.php',
      method: 'GET',
      data: {
        'id': id
      },
      success: function (response) {
		  
		 

		  
        $modal.find('.modal-body').html(response);
        $modal.find('.modal-title').html($(".origtitle").html());
		
		

	 $modal.find('.carousel').each(function () {
          new bootstrap.Carousel(this);
        });
		
		
		




	
  $('.modal-catalog-item').on('shown.bs.modal', function (e) {

    var $modal = $(this);

    $modal.find('.modal-catalog-item-slider-main').slick({
      slidesToShow: 1,
      slidesToScroll: 1,
      arrows: false,
      asNavFor: '.modal-catalog-item-slider-nav',
      lazyLoad: 'ondemand',
	  infinite: false,
      swipe: false
    });

	
  });
  
  
  	
		
      }
	  
	  
	  
    });
  });


});



по сути он на ссылку a.modal-catalog-item открывает модальное окно

передавая параметры на генерацию содержимого к примеру

data-catalog-item-id="26"



<a class="btn-modal-catalog-item" data-bs-toggle="modal" data-bs-target=".modal-catalog-item" data-catalog-item-id="26">

тут содержание блока

</a>


так вот если внутри блока достаточно много информации слайдер к примеру то это все грузится какое то время на слабом интернете пару секунд

и если в эти пару секунд нажать на ссылку то открывается модальное окно и ничего не погружается

скрипт подключен в конце сайта </body>

но вот если дождаться полной загрузки всех картинок чтобы страница полностью прогрузилась то все ок.

т.е как то надо заблокировать нажатие на ссылки в момент когда грузится страница

думал обернув

$(window).on('load', function() {}


я как раз и должен был получить что выполнение . т.е открытие модальных ссылок будет происходить после полной загрузки страницы

но как понял это не работает.

может есть какой то вариант еще сделать недоступными клик по ссылке

a class="btn-modal-catalog-item"

перекрывать слоем z-index а потом его снимать как то не хотелось бы

может из кода удалить data-bs-toggle="modal" и как то его назначить только в конце загрузки страницы.

т.е походу сейчас в момент пока еще скрипт не загружен событие data-bs-toggle="modal" вызывает открытие пустого окна без параметров генерации контента. (которые задаются в скрипте ниже)

помогите пожалуйста кто знает специфику модальных окон на bootstrap 5.2
Ответить с цитированием
  #2 (permalink)  
Старый 15.12.2022, 21:30
Профессор
Отправить личное сообщение для ufaclub Посмотреть профиль Найти все сообщения от ufaclub
 
Регистрация: 27.11.2010
Сообщений: 202

т.е вот data-bs-toggle="modal" этот кусок бы только после загрузки в ссылку вставлять.

без него не открывается окно.

а так загрузилась страница полностью в ссылку


<a class="btn-modal-catalog-item" data-bs-target=".modal-catalog-item" data-catalog-item-id="26">

тут содержание блока

</a>

добавили data-bs-toggle="modal" и после уже по условиям кода

 $('.modal-catalog-item').on('show.bs.modal', function (e) {....}

происходила работа скрипта
Ответить с цитированием
  #3 (permalink)  
Старый 15.12.2022, 21:54
Профессор
Отправить личное сообщение для ufaclub Посмотреть профиль Найти все сообщения от ufaclub
 
Регистрация: 27.11.2010
Сообщений: 202

пробовал поднять секцию скрипта в шапку сайта до выполнения кода
ситуация не изменилась
Ответить с цитированием
  #4 (permalink)  
Старый 15.12.2022, 22:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

ufaclub,
убрать из кнопок вызов модального окна -- установить клик на саму кнопку -- в конец success добавить вызов модального окна, всё.
Ответить с цитированием
  #5 (permalink)  
Старый 15.12.2022, 22:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

ufaclub,
примерно так ... детали уточните по месту.
<a class="btn-modal-catalog-item"  data-catalog-item-id="26">

тут содержание блока

</a>
 <script>
        $(window).on('load', function() {
            $('[data-catalog-item-id]').on('click', function(event) {
                event.preventDefault();
                var $modal = $('.modal-catalog-item'),
                    $btn = $(this);
                var id = $btn.data('catalog-item-id');
                $.ajax({
                    url: '/inc/catalog/item.php',
                    method: 'GET',
                    data: {
                        'id': id
                    },
                    success: function(response) {
                        $modal.find('.modal-body').html(response);
                        $modal.find('.modal-title').html($(".origtitle").html());
                        $modal.find('.carousel').each(function() {
                            new bootstrap.Carousel(this);
                        });
                        $('.modal-catalog-item').on('shown.bs.modal', function(e) {
                            var $modal = $(this);
                            $modal.find('.modal-catalog-item-slider-main').slick({
                                slidesToShow: 1,
                                slidesToScroll: 1,
                                arrows: false,
                                asNavFor: '.modal-catalog-item-slider-nav',
                                lazyLoad: 'ondemand',
                                infinite: false,
                                swipe: false
                            });
                        });
                       $modal.modal("show");
                    }
                });
            });
        });
    </script>
Ответить с цитированием
  #6 (permalink)  
Старый 15.12.2022, 23:32
Профессор
Отправить личное сообщение для ufaclub Посмотреть профиль Найти все сообщения от ufaclub
 
Регистрация: 27.11.2010
Сообщений: 202

Спасибо! прям все в точку как хотел теперь работает. поражает ваш уровень знаний и умений!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод js скрипта после загрузки страницы dertovs Javascript под браузер 4 28.09.2017 14:06
jQuery для загрузки страницы в <div> Dr.Holerik jQuery 12 11.10.2016 17:36
Плавный скролл к якорю после загрузки страницы pro100lexx87 jQuery 7 17.01.2014 14:13
Ajax и получение ответа до полной загрузки страницы Suspended jQuery 3 16.11.2008 14:57
Действие после полной загрузки Воитель Общие вопросы Javascript 4 02.10.2008 18:20