2011-01-10 4 views
1

У меня есть небольшой сценарий, который я пишу (чтобы игнорировать сотни глупых запросов, которые я получаю на FaceBook).Как я могу эмулировать триггер jQuery()?

var inputs = document 
       .getElementById('contentArea') 
       .getElementsByTagName('input'); 

for (var i = 0, inputsLength = inputs.length; i < inputsLength; i++) { 

    if (inputs[i].value !== 'Ignore') { 
     continue; 
    } 

    // What I would do with jQuery, if inputs[i] was a jQuery object. 
    inputs[i].click(); 

} 

Поэтому в основном я хочу, чтобы вызвать событие щелчка на все эти кнопки игнорировать, и пусть AJAX facebook сделает все остальное.

Как я могу эмулировать клик без jQuery? У меня есть Googled, но я не нашел ответа.

ответ

1

.click() is a method of HTMLInputElements in Firefox (не уверен, что в других браузерах тоже).

Другой способ, который должен работать в других браузерах тоже использует document.createEvent:

var inputs = document 
       .getElementById('contentArea') 
       .getElementsByTagName('input'); 

for (var i = 0, inputsLength = inputs.length; i < inputsLength; i++) { 

    if (inputs[i].value !== 'Ignore') { 
     continue; 
    } 
    // maybe it is enough to create it only once before the the loop, don't know 
    var evt = document.createEvent("MouseEvents"); 
    evt.initMouseEvent("click", true, true, window, 
     0, 0, 0, 0, 0, false, false, false, false, 0, null); 
    inputs[i].dispatchEvent(evt); 

} 

Конечно можно было бы капсулированной это функции, чтобы сделать его повторного использования;)

+0

+1, и я пометив его, когда я узнал что-то ('document.createEvent()'). В этом случае я бы не инкапсулировал его, потому что я запускал его прямо в моей консоли, только только =}. Спасибо за Ваш ответ. – alex

1

Я просто пробовал этот код выше (используя click()), и он работал в моем Firefox.

Так что я думаю, что ответ сделайте это как jQuery.

Окончательный код ...

var inputs = document 
      .getElementById('contentArea') 
      .getElementsByTagName('input'); 

for (var i = 0, inputsLength = inputs.length; i < inputsLength; i++) { 

    if (inputs[i].name !== 'actions[reject]') { 
     continue; 
    } 

    inputs[i].click(); 

}