JQuery Получить значение автозаполнения текста встроенного виджета

Я встроил на свой сайт виджет, предоставленный сторонним сайтом, этот виджет отображает поле ввода, которое автоматически предлагает пользователю текст при вводе.

Это то же самое, что и поиск Ask Your Question на эта страница.

Я встраиваю виджет, включив файл widget.js в свой документ <head> и вызвав его в свой html с помощью;

<div id = "widget-5032"></div>

Когда я просматриваю HTML-код виджета, я вижу следующее (пример списка элементов);

<div>
    <ul id = "search-query-5032_list">
        <li data-question = "Alaska">Alaska</li>
        <li data-question = "Hawaii">Hawaii</li>
        <li data-question = "etc.">etc.</li>
    </ul>
</div>

Автоматические предложения подаются со стороннего веб-сайта, при нажатии на него ввод заполняется предложенным текстом, и страница автоматически перенаправляется на внешний веб-сайт (нет необходимости нажимать кнопку search). Я не могу контролировать работу виджета.

Я пытаюсь зафиксировать значение выделенного текста, но не знаю, как это сделать?

Причина, по которой я хочу это сделать, заключается в том, что я могу отправить его в Диспетчер тегов Google с помощью dataLayer.push({}).

Я пробовал это, но это не работает;

$('#search-query-5032_list li').on('click', function() {
    alert($(this).text());
});

Любой совет приветствуется.

Какую службу вы используете для автопредложений?

XTOTHEL 03.10.2018 19:23
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
88
2

Ответы 2

Можете ли вы попробовать это:

$('#search-query-5032_list').on('click', 'li', function(){
    alert($(this).text());
});
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class = "input-group">
    <ul id = "search-query-5032_list">
        <li data-question = "Alaska">Alaska</li>
        <li data-question = "Hawaii">Hawaii</li>
        <li data-question = "etc.">etc.</li>
    </ul>
</div>

хм, вы тогда не предоставили нам правильную информацию. вы пробовали этот образец?

Nezir 03.10.2018 19:11

хм, как вы можете видеть, в моем примере это просто, важно, чтобы у вас был правильный идентификатор ul, а также была правильная ссылка на библиотеку jquery. Мой образец здесь показывает значение ul li во всплывающем окне, не так ли? если есть, то у вас есть еще одна проблема, почему i3t не работает на ваших сторонах, мы этого не видим?

Nezir 04.10.2018 10:18

Я понимаю вашу логику, и если бы код не был встроенным виджетом, я уверен, что ваш пример кода будет работать. Однако код, который я использую, представляет собой динамически добавляемый виджет, имеет ли это значение?

TheOrdinaryGeek 04.10.2018 10:39

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

Nezir 04.10.2018 10:55

Я быстро просмотрел код на странице и думаю, что вы можете использовать этот фрагмент кода на своей странице. Try / Catch важен, поскольку скрытый ввод создается только при выборе элемента.

springSpace.la.widget_5032_inst.search.autocomplete.input.parentNode.addEventListener('click', function(){

try {
    alert(searchform_5032.form.querySelector('input[name=faqid]').value);
}
catch(err) {
    console.info("empty");
}

});

Там, где у меня есть «предупреждение», вы должны заменить его push-уведомлением уровня данных GTM, чтобы получить эту информацию в GTM / GA.

Спасибо за помощь @XTOTHEL, но он не работает. Я не использую никакого кода запуска, я просто включаю файл widget.js (который выглядит как pastebin.com/wjHGjggw), а затем вставляю одну строку html <div id = "widget-5032"></div>.

TheOrdinaryGeek 05.10.2018 15:53

@TheOrdinaryGeek Я внес изменения, я основал свое решение на рабочем примере здесь: aclib.us

XTOTHEL 05.10.2018 16:40

Еще раз спасибо @XTOTHEL, но теперь я получаю ошибки (index):608 Uncaught TypeError: Cannot read property 'search' of undefined и Uncaught ReferenceError: searchform_5032 is not defined. Я продолжу пробовать, основываясь на вашем образце :)

TheOrdinaryGeek 05.10.2018 17:53

Другие вопросы по теме