Добавление кейлистера и использование javascript для нажатия на ссылку в Greasemonkey - PullRequest
2 голосов
/ 20 июля 2010

Я хочу создать сценарий с жирной обезьяной, который добавит сочетание клавиш для действия выхода из системы на одном почтовом сайте.

В настоящее время ссылка для выхода из системы "? Logout & hl = en" , которая имеет id = ": r5" .Я могу получить узел для ссылки, но не могу вызвать клик по нему.

Я пробовал скрипт следующим образом

function key_event(event){
    GM_log("Hello");
    GM_log(event.keyCode);
    //if(event.keyCode != 112) return;
    e=document.getElementById(':r5');
    if(!e) {return;}
    var evObj = document.createEvent('MouseEvents');
    evObj.initMouseEvent(('click'),true,true,window,0,0,0,0,0,false,false,false,false,0,null);
    GM_log(e);
    e.dispatchEvent(evObj);
}

document.addEventListener("keypress", key_event, true);


Но это не работает.Что вы думаете здесь не так?

Спасибо, J

Ответы [ 2 ]

2 голосов
/ 20 июля 2010

Не думаю, что вы сможете перейти по ссылке из скрипта. Вместо этого вы должны попытаться перенаправить на ссылку:

.....
e=document.getElementById(':r5'); 
document.location.href = e.href;
.....
1 голос
/ 21 июля 2010

Это либо ошибка, либо «функция» безопасности браузеров Mozilla (разработчики пока не решили). Смотрите: "Имитация щелчка на привязке с помощью dispatchEvent и initMouseEvent не вызывает реального щелчка" .

Таким образом, вы не можете активировать ссылку таким образом (пока).

Если это обычная ссылка, используйте:

var sTargetURL  = document.getElementById(':r5').href;
window.location.href = sTargetURL;

.
Если это вызов JavaScript, EG <a id=":r5" href="SomeFunc()">foo</a> использовать:

unsafeWindow.SomeFunc();
...