Привет, друзья! Возникла Есть у нас онлайн-консультант jivosite, у него есть API. Возникла задача через API запрашивать цену для товаров, которых нет в наличии.
Но документации по "живосайту" мало, а техподдержка ничего вразумительного мне не ответила.
Так вот, первая беда: динамические элементы
На странице категории при выборе фильтра в левой части страницы, товары подгружаются AJAXом. И вот после этой подгрузки, обработчики из кода ниже перестают работать. Хотя я использую .on как написано в документации jquery
собственно, вот универсальный код (я его сделал и для категории и для страницы товара), который всем заведует:
var $j = jQuery.noConflict();// создадим указатель для совместимости с другими скриптамиfunction jivo_onLoadCallback(){// встроенная ункция jivosite, подтверждающаяя его готовность
console.log("jivo ready");
$j(document).ready(function(){// ждем загрузки документа
$j('body').on("click",".ask-product",function(e){// не работает после динамической подгрузки
e.preventDefault();
$ask_product_id = $j(this).data("product-id");// достаем идентификатор товара
$ask_base = $j("#product_name_"+ $ask_product_id);// находим базовый элемент с данными о товаре
$product_name = $ask_base.text();// забираем название товара
$product_keycode = atob($ask_base.data("keycode"));// base64 кодированная строка с кодом товара для админа
console.log("$product_url="+ $product_url);
console.log("$product_name="+ $product_name);
jivo_api.showProactiveInvitation("Здравствуйте! Минутку, уточняем для вас цену и наличие "+ $product_name +"...");
jivo_api.sendMessage({name:'Запрос цены'}, $product_name +" "+ $product_keycode);
jivo_api.open();});});};
Вторая беда: пока не загрузился код живосайта, я не могу к нему обращаться, ок, будем ждать его используя встроенную функцию.
попутно, нужно дождаться загрузки основного документа и уже потом навешивать обработчики событий.
Это работает всё крайне медленно и посетитель видит активную кнопку запроса на странице товара раньше, чем код будет готов исполняться. Кликает раньше и ничего не получает естественно. А страница почему-то перезагружается. Как это исправить?
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Актуальные контакты:
Telegram: @Nikker_web
E-Mail: tarasevich.email@gmail.com
Портфолио https://www.behance.net/d4d4186e
Разрабатываю дизайн групп в соц сетях, сайтов, приложений, другой дизайн под заказ
Актуальные контакты:
Telegram: @Nikker_web
E-Mail: tarasevich.email@gmail.com
Разрабатываю дизайн групп в соц сетях, сайтов, приложений, другой дизайн под заказ
Портфолио https://www.behance.net/d4d4186e
Question
d0ublezer0
Привет, друзья! Возникла Есть у нас онлайн-консультант jivosite, у него есть API. Возникла задача через API запрашивать цену для товаров, которых нет в наличии.
Но документации по "живосайту" мало, а техподдержка ничего вразумительного мне не ответила.
Так вот, первая беда: динамические элементы
На странице категории при выборе фильтра в левой части страницы, товары подгружаются AJAXом. И вот после этой подгрузки, обработчики из кода ниже перестают работать. Хотя я использую .on как написано в документации jquery
собственно, вот универсальный код (я его сделал и для категории и для страницы товара), который всем заведует:
Вторая беда: пока не загрузился код живосайта, я не могу к нему обращаться, ок, будем ждать его используя встроенную функцию.
попутно, нужно дождаться загрузки основного документа и уже потом навешивать обработчики событий.
Это работает всё крайне медленно и посетитель видит активную кнопку запроса на странице товара раньше, чем код будет готов исполняться. Кликает раньше и ничего не получает естественно. А страница почему-то перезагружается. Как это исправить?
Edited by d0ublezer0Link to comment
Share on other sites
13 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.