2010-07-27 3 views
3

나는 아주 간단한 그리스 몽키 스크립트를 쓰고 싶었는데, 그 이유는 "당신은 확실합니까?" 사이트를 자바 스크립트 확인 많이 사용합니다. 나는 그것을 개인적인 용도로 사용하거나 그것을 출판하지 않을 것입니다. 몇 가지 인터넷 검색 후 나는 내가하고 싶은 것만 설명한 http://wiki.greasespot.net/UnsafeWindow을 발견했습니다.confim 대화 상자를 제거하기 위해 greasemonkey 스크립트를 작성하는 방법은 무엇입니까?

내가 원하는 페이지의 소스 코드는 그냥 true를 반환으로 confirmIt (메시지)를 교체하려면이

var message = "Are you sure?"; 
function confirmIt(message) { 
    var result = confirm(message); 
    return result; 
} 

같다;

그래서 내가 스크립트 내가 오류 얻을

var oldFunction = unsafeWindow.confirmIt(message); 
    unsafeWindow.confirmIt(message) = function() { 
    return true; 
}; 

했다 "메시지가 정의되어 있지 않습니다."

내가이 권리에 대해 잘 모르겠다면 (나는 생각하지 않는다), 페이지에 자바 스크립트 기능을 대체하는 방법에 대해 Greasemonkey에서 더 많은 경험을 가진 사람의 조언을 주시면 감사하겠습니다. .

+1

웹 페이지를 게시하면 알려줄 수 있습니다. 그것은 아마도 당신이 볼 수있는 팝업은 단지 overlaying div 일뿐입니다 - greasymonkey를 사용하여 페이지가로드 될 때마다 div를 숨기고 더 쉬운 일을 할 수 있습니다. – jakeisonline

답변

4

unsafeWindow.confirmIt을 함수 (함수) 이외의 변수로 생각할 필요가 있습니다. 코드에서 시도하는 작업을 수행하는 방법은 다음과 같습니다.

var oldFunction = unsafeWindow.confirmIt; 

unsafeWindow.confirmIt = function(message) { 
    return true; 
}; 

시도해보십시오.

+0

Worked! 고맙습니다. 궁금한 점이 있지만, 필자는 함수에서 변수 메시지에 액세스하는 것에 신경을 쓰지 않지만 원하는 경우 어떻게 매개 변수에 액세스 할 수없는 것처럼하면 어떻게 할 수 있습니까? –

+1

매개 변수에 액세스 할 수 있습니다. 함수는 "메시지"라고하는 매개 변수를 취하는 것으로 정의됩니다. 당신은 말할 수 있었다 unsafeWindow.confirmIt = function (message) {alert (message); return true;}; 그리고 정확히 예상대로 작동합니다. – Hellion

관련 문제