2013-05-23 3 views
1

Если я создаю программно DIV с Tampermonkey:onclick добавил, что Tampermonkey не вызывает функцию?

HTML:

<div onclick="myfunc()"/> 

сценарий:

function myfunc() { alert("clicked"); } 

нажмите на DIV; myfunc не вызывается в моем скрипте.

Как я могу заставить это работать?

(Я использую TM/jQuery для добавления div на страницу, и я хотел бы добавить к нему некоторые функции. Я предполагаю, что мне нужно перенаправить вызов функции в HTML на нужное место. Я также использую функции GM_ поэтому я не могу просто вставить код напрямую.)

ответ

5

Проблема в том, что, поскольку вы устанавливаете атрибут для строки, она оценивает строку в области целевой страницы, которая не имеет функции myfunc , myfunc находится в области пользовательского поля.

Как правило, вы должны never use onclick в любом случае, но это тройной для пользовательских скриптов.

сделать элемент легко выбирать, как:

<div id="gmMyDiv"></div> 


Затем, либо использовать the addEventListener() method, как это:

function myfunc (zEvent) { 
    alert ("clicked"); 
} 

var myDiv = document.querySelector ("#gmMyDiv"); 
if (myDiv) { 
    myDiv.addEventListener ("click", myfunc , false); 
} 


Или так как вы используете JQuery:

function myfunc (zEvent) { 
    alert ("clicked"); 
} 

$("#gmMyDiv").click (myfunc); 
Смежные вопросы