2013-05-09 4 views
2

나는과 같이, 일부 필드에 이벤트 리스너를 추가 할 Mootools의를 사용하는 페이지를 수정하려고 해요 : 나는 그리스 몽키/Tampermonkey를 사용하여이 동작을 제거해야Greasemonkey 스크립트를 사용하여 MooTools 이벤트를 제거 하시겠습니까?

$('inputPassword').addEvents({ 
    keypress: function(){ 
     new WorkspaceModalbox({'href':'someurl.phtml', 'width':500, 'height':140, 'title':'foo'}); 
    } 
}); 


. I 시도 : removeEvents가 Mootools의 함수로부터, addEvents 반대 하나는

// ==UserScript== 
// @require http://userscripts.org/scripts/source/44063.user.js 
// ==/UserScript== 
window.addEventListener("load", function(e) { 
    $('inputPassword').removeEvents('keypress'); 
}, false); 

.

하지만 스크립트가 작동하지 않습니다. (편집자 주 :보고 된 오류가 없음)

왜? 내 코드가 실제 페이지의 코드보다 먼저 실행되기 때문입니까?

+0

글쎄요 - 아마도 코드 뒤에 addEvents가 실행되는 코드 일 것입니다. 코드를 게시 할 수 있습니까? – Adidi

답변

1

이벤트가 페이지 범위에 설치되었지만 스크립트가 스크립트 범위에서 실행 중입니다. 또한 브라우저 및 @grant 설정에 따라 관련 샌드 박스가있을 수 있습니다.

따라서, 해당 이벤트를 제거하려면 (무 도구 unsafeWindow와 함께 멋진 연주하지 않는 것 같습니다.) 스크립트 삽입를 사용해야합니다이 스크립트는 그리스 몽키와 Tampermonkey 모두에서 작동

을 :

// ==UserScript== 
// @name  _Remove a Moo event listener 
// @include http://YOUR_SERVER.COM/YOUR_PATH/* 
// @grant GM_addStyle 
// ==/UserScript== 
/*- The @grant directive is needed to work around a design change 
    introduced in GM 1.0. It restores the sandbox. 
*/ 

window.addEventListener ("load", function (e) { 
    addJS_Node ("$('inputPassword').removeEvents('keypress');"); 
}, false); 


//-- addJS_Node is a standard(ish) function 
function addJS_Node (text, s_URL, funcToRun, runOnLoad) { 
    var D         = document; 
    var scriptNode       = D.createElement ('script'); 
    if (runOnLoad) { 
     scriptNode.addEventListener ("load", runOnLoad, false); 
    } 
    scriptNode.type       = "text/javascript"; 
    if (text)  scriptNode.textContent = text; 
    if (s_URL)  scriptNode.src   = s_URL; 
    if (funcToRun) scriptNode.textContent = '(' + funcToRun.toString() + ')()'; 

    var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement; 
    targ.appendChild (scriptNode); 
} 


페이지 도구의 Moo 도구 인스턴스가 이벤트를 제거하기위한 것이어야하기 때문에 -Moo 도구가 필요합니다.

+0

감사합니다. 작동합니다. –

+0

당신을 진심으로 환영합니다. 기꺼이 도와주세요. –