2009-11-11 15 views
7

Kiedy piszę skryptów Greasemonkey, jeśli utworzyć div i ustawić onclick, żeby go ostrzec działa:GreaseMonkey onclick wiążące

var btn = document.createElement('div'); btn.setAttribute('onclick',"alert('clicked!');");

Jednakże, jeśli pytam go zrobić coś innego, który został zdefiniowany wcześniej niż nie powiedzie:

function graphIt() {...}; var btn = document.createElement('div'); btn.setAttribute('onclick',"graphIt();");

Czy jest jakiś sposób mogę powiązać funkcję do zdarzenia onclick div?

+0

PS. Funkcja, którą chcę wywołać, wywołuje również inne funkcje. – KalEl

Odpowiedz

10

Twój problem polega na tym, że ponieważ ustawiasz atrybut na łańcuch, ocenia on ciąg znaków w kontekście samej strony, która nie ma funkcji graphIt.

należy wywołać metodę addEventListener coś takiego:

function graphIt() {...}; var btn = document.createElement('div'); 
btn.addEventListener("click", graphIt, false); 
+0

idealne rozwiązanie. – kitokid

+0

Czy to nadal działa? Próbowałem, a przycisk jest automatycznie klikany, gdy strona ładuje się ... – geekscrap

+0

@geekscrap: Prawdopodobnie nazwałem funkcję zamiast jej podania. – SLaks