2012-05-08 3 views
0

У меня есть событие на странице, которую мне нужно запустить из расширения Chrome. У меня нет доступа для изменения JavaScript на странице.Fire jQuery live event с родным JavaScript

$(selector).live("click", fn); 

мне нужно, чтобы вызвать это с родной JS в моем расширение Chrome, как это:

selectorElement.click(); //doesn't work 

Конечно, это не будет работать, потому что функция live используется. Как я могу его запустить?

Спасибо!

+0

Я уверен, что я реализовал то же, что вы описали выше. Нет причин, почему это не должно работать. Расширения страницы и chrome объединяют DOM друг с другом, включая события. –

+0

Чтобы быть на 100% понятным, вы используете код расширения в сценарии содержимого или через 'executeScript', правильно? – apsillers

+0

@ capsillers это действительно сценарий содержимого – tau

ответ

4

Если у вас нет JQuery, вы можете запустить события DOM с помощью dispatchEvent:

var selector = "#..."; 
var elmList = document.querySelectorAll(selector); 

var evt = document.createEvent("MouseEvents"); 
evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); 
elm[0].dispatchEvent(evt); 

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

+0

это отлично работает! большое спасибо! – tau

0

Вы попробовали trigger()?

$(selector).trigger('click'); 

Конечно, trigger() следует использовать на объекте JQuery (отсюда $(selector)) .

+0

К сожалению, я могу использовать только собственный javascript для этого. У меня нет доступа к 'trigger'. благодаря! – tau