Я написал расширение для Chrome, которое извлекает мой список покупок из облачной службы приложения для управления рецептами и добавляет каждый ингредиент на страницу поиска покупок в супермаркете.
Веб-сайт - Tesco Groceries, а я -используя страницу «поиск по списку товаров».
До сих пор мне удалось создать расширение и написать весь код.У меня есть всплывающее окно с кнопкой, которая при нажатии вызывает скрипт содержимого.Сценарий содержимого выполняет вызов фонового сценария, который выполняет фактическую HTTP-выборку через ajax-вызов jQuery и передает результат обратно в сценарий содержимого.
Затем сценарий содержимого наконец выполняет итерацию по результату.Страница списка покупок структурирована как форма, где каждый элемент выглядит как
<input class="multi-search-form__item-field" data-auto="multisearch-list-item" type="text" id="listItem3" name="listItems" placeholder="" maxlength="99" value="">
Так что я делаю
for (index in json.result){
selector = "#listItem" + index;
$(selector).focus()
.val(json.result[index].name)
.attr("value", json.result[index].name)
.change();
}
Это на самом деле работает, и все правильные текстовые элементы появляются ввеб-страница.Однако кнопка отправки не становится активной.
Если я вручную (клавиатура и мышь) изменю любое из текстовых полей listItem, все остальные входные данные текстового поля исчезнут, но отредактированное мной останется.Затем кнопка подтверждения становится активной.
Я заметил, что проверка HTML-документа показывает, что свойство value автоматически завершенных элементов остается пустым, но у измененного вручную правильного значения.Я попытался использовать всевозможные комбинации установки .val, .attr ("val",) и использования focus (), change () и даже пытался эмулировать нажатие клавиши пробела после ввода значения.Ничего не работает.
Например: у меня в списке покупок 3 вещи: молоко, яйца и бобы.Я открываю веб-страницу, нажимаю кнопку в моем расширении, и веб-страница показывает обновленные текстовые поля с молоком, яйцами и бобами, каждое в отдельной строке.Затем я нажимаю на текстовое поле с «яйцами» и нажимаю пробел.Теперь во 2-м поле со списком написано «яйца», но остальные 2 поля остаются пустыми.
Редактировать: В качестве дополнительной заметки, если я просто отправляю форму, она действительно работает, и появляется страница онлайн-покупок срезультат для моего списка.ОДНАКО, первоначальный список содержит только 10 текстовых полей и, кажется, динамически добавляет больше, как только вы начнете вводить текст в поле 9. Тем не менее, программное заполнение этого поля не заставляет его создавать дополнительные текстовые поля, так как мой список ограничен 9 элементами..