2010-07-20 2 views
2

나는 하나의 메일 사이트에서 로그 아웃 작업을위한 바로 가기 키를 추가하는 기름기 많은 원숭이 스크립트를 만들고 싶습니다. Keylistener 추가 및 Greasemonkey의 링크를 클릭하기위한 javascript 사용

은 현재 로그 아웃 링크 은? "로그 아웃 & 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

답변

1

이 버그 또는 Mozilla 브라우저의 보안 "기능"중 하나는 (개발자는 결정하지 않은)입니다. 참조 : "simulating a click on an anchor using dispatchEvent and initMouseEvent does not trigger a real click".

이렇게 (지금은) 링크를 트리거 할 수 없습니다.

는 일반 링크를 사용하는 경우 :

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

가.
자바 스크립트 호출 인 경우 EG <a id=":r5" href="SomeFunc()">foo</a>은 다음을 사용합니다.

unsafeWindow.SomeFunc(); 
2

난 당신이 스크립트에서 링크를 클릭 할 수있을 것이라고 생각하지 않습니다. 대신 링크 위치로 리디렉션하려고한다 :

..... 
e=document.getElementById(':r5'); 
document.location.href = e.href; 
..... 
관련 문제