Ищете простой способ щелкнуть несколько элементов с помощью букмарклета - PullRequest
0 голосов
/ 07 апреля 2019

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

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

javascript:(function () {
var i = document.getElementById("contactSeller").click()
})()

На другой странице есть кнопка с идентификатором "sndBtn". Однако добавление еще одной функции click () в код со вторым идентификатором не работает.

javascript:(function () {
var i = document.getElementById("contactSeller").click();
var m = document.getElementById("sndBtn").click()
})()

Насколько я могу сказать, это потому, что getElementById может работать только один раз на странице. (Удаление первой функции заставляет работать вторую). Другие пользователи предлагали рекурсивные функции с помощью CSS или jQuery, но мне не повезло заставить их работать как букмарклеты.

Может ли кто-нибудь помочь создать простую функцию, которая будет выполнять список щелчков? Было бы неплохо иметь возможность переходить по гиперссылкам, отправлять формы и нажимать кнопки, т. Е. Это не только рекурсивный скрипт той же функции. Кажется, что каждый из элементов на каждой странице имеет уникальный идентификатор.

Ссылки GetElementByID - несколько идентификаторов

https://gist.github.com/aseemk/5000668

https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll

http://www.dynamicdrive.com/forums/showthread.php?30130-multiple-ID(elements)-inside-document-getElementById(-)

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Сделал пример и все работает хорошо, взгляните.

Я думаю, что то, что написал @Rich Moss, правильно, что document.getElementById("contactSeller") не определено или что функция click получает исключение, которое препятствует продолжению кода.

function c(v){
console.log(v)
}

document.getElementById("btn1").click()
document.getElementById("btn2").click()
<input type="button" onclick="c(1)" value="btn1" id="btn1" />

<input type="button" onclick="c(2)" value="btn2" id="btn2" />
0 голосов
/ 23 апреля 2019

Количество звонков на номер getElementById не ограничено.Когда элемент не существует, вы, вероятно, столкнулись с исключением, которое привело к завершению вашего скрипта.Вы не можете вызвать .click() для нулевого объекта.

Это будет проверять наличие элемента перед нажатием:

javascript:(function () {
var i = document.getElementById("contactSeller"); 
if(i){i.click();}
var m = document.getElementById("sndBtn")
if(m){m.click();}
})()
...