2009-04-03 3 views
0

Так что я кодирую сценарий Greasemonkey для этого сайта .. Во всяком случае, моя проблема в том, что я не могу прикрепить событие onclick к моему новому созданный якорь.Я хочу добавить событие в ссылку динамически .. Но привязка onclick не работает

Я не знаю, что случилось, может быть, потому, что я нахожусь в Greasemonkey, поэтому он не работал должным образом?

function createButton() { 
    var a = document.createElement('a'); 
    var css = document.createElement('style'); 
    css.type = 'text/css'; 
    css.innerHTML = '#prt { position:absolute; right:3em; top: 6em; font-family: Arial,Helvetica,sans-serif; font-weight:bold; font-size:125%; background: #777777 none repeat scroll 0 0; color: white; padding: 6px 12px;}' 
    a.href = '#'; 
    a.innerHTML = 'Print Topic'; 
    a.id = 'prt'; 
    a.onclick = getTopic; // DOESN'T WORK 
    document.body.insertBefore(a, document.body.lastChild); 
    document.body.appendChild(css); 
} 

Я попробовал другой метод, как SetAttribute

a.setAttribute('onclick', function() { alert("hey"); }); 

SetAttribute тоже не работает ..

Почему ??

Привет, ребята,

Я сделал это сработало. Кто-то помог мне в IRC#greasemonkey .. Спасибо, бросок!

Таким образом, проблема использования setAttribute или свойства .onclick элемента greasemonkey не поддерживает их, вместо этого он вернет ошибку «Component not available» в консоли JavaScript.

Если вы столкнулись с этой проблемой, прежде чем вы должны использовать

element.addEventListener ('click', myClickHandler, false); 

Вот Wiki: http://wiki.greasespot.net/XPCNativeWrapper#Event_Handlers

ответ

2

Используйте метод attachEvent якоря -

a.attachEvent(getTopic)

Edit - attachEvent является Только IE. Для Firefox, вы должны будете использовать addEventListener -

a.addEventListener(getTopic)

1

Попробуйте обернув его в анонимной функции

a.onclick = function(){ 
    getTopic(); 
} 
+0

Спасибо .. Но кнопка не появляется после того, как упаковка этой функции. – rymn