Я хочу прикрепить событие к ссылке динамически .. Но прикрепление по клику не сработало - PullRequest
0 голосов
/ 03 апреля 2009

Итак, я пишу сценарий Greasemonkey для этого сайта. В любом случае, моя проблема в том, что я не могу прикрепить событие 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 не поддерживает их, а возвращает консоль JavaScript «Component not available».

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

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

Вот вики: http://wiki.greasespot.net/XPCNativeWrapper#Event_Handlers

Ответы [ 2 ]

2 голосов
/ 03 апреля 2009

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

a.attachEvent(getTopic)

Редактировать - attachEvent только для IE. Для Firefox вам придется использовать addEventListener -

a.addEventListener(getTopic)

1 голос
/ 03 апреля 2009

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

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