2014-02-23 3 views
3

По какой-то причине я могу щелкнуть некоторые ссылки/кнопки, но не могу использовать кнопки/все, что имеет атрибут onclick. Например: мой JavaScript ввода кода я в консоли браузера:Как программно нажать кнопку через консоль браузера [code inside]

var o = document.getElementsByName("takepic"); 
for (var i = 0; i < 1000; i++){ 
    o.click(); 
    console.log(i); 
} 

Я поставил console.log, так что я знаю, что делает браузер, и где он в настоящее время находится.

HTML-код на странице:

<form> 
    <input type="button" value="Configure..." onclick="webcam.configure()"> 
    &nbsp;&nbsp; 
    <input type="button" value="Take Snapshot" onclick="take_snapshot()" name="takepic"> 
</form> 

Так в основном, я хочу взять быстрые снимки с помощью консоли браузера, но когда я вхожу в моем коде, я получаю эту ошибку:

TypeError: Object # has no method 'click'

Когда я использую тот же код, например, для повторного добавления друзей на Facebook, и я использую это:

var o = document.getElementsByName("fbaddfriend_example"); 
for (var i = 0; i < o.length; i++){ 
    o[i].click(); 
    console.log(i); 
} 

это d бесконечно работает. Я просто пытаюсь сделать то же самое с помощью кнопки на странице, но безрезультатно.

+0

Yup, но по какой-то причине SOF помещает их в отдельные строки [это довольно круто]. –

+0

Некоторые типы элементов имеют метод «щелчок», некоторые - нет. См. Дубликат [Как имитировать щелчок мышью с помощью Javascript?] (Http://stackoverflow.com/questions/6157929/how-to-simulate-mouse-click-using-javascript) – Bergi

ответ

4

Изменить код:

var o = document.getElementsByName("takepic"); 
for (var i = 0; i < 1000; i++){ 
// ---v 
    o[i].click(); 
    console.log(i); 
} 

Переменная o содержит коллекцию всех извлекаемых элементов. o[i] возвращает элемент в позиции i.

+0

Приятно, я должен был попробовать добавить этот массив от i до o. Он работает, но он нажимает только один раз. Это не продолжается. ошибка тоже выплевывает: «TypeError: не может вызвать метод« click »undefined» EDIT: О, я думаю, это потому, что я добавлен 1 к нему, и поскольку есть только один элемент, я должен просто жестко обозначить «1», в o [1] .click() .... Я попробую это, и я вернусь к вам –

+0

@JeromieDevera, если есть только один элемент, укажите его id, а затем используйте 'document.getElementById() '. Тогда вам не нужно беспокоиться о ссылке на индекс массива. Кроме того, массивы нуль-индексируются. Если есть только один, индекс равен 0. – Bic

+1

@JeromieDevera Цикл выполняется 1000 раз, но массив 'o' содержит меньше элементов. Рассмотрим код Bic, который нажимает каждую кнопку 1000 раз. – ComFreek

5

Ваша проблема в коде, который вы вводите в консоль. Вы используете document.getElementsByName(), который вернет массив элементов. Вам нужно пройти через эти элементы. Вы делаете это во втором сегменте кода, но не в первую очередь.

var o = document.getElementsByName("takepic"); 
for (var j = 0; j < o.length; j++) { 
    for (var i = 0; i < 1000; i++){ 
     o[j].click(); 
     console.log(i); 
    } 
} 
Смежные вопросы