GreasemonKey가로드 후 페이지에서 함수를 호출하도록하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/443430

  •  22-07-2019
  •  | 
  •  

문제

페이지에 이미 존재하는 JavaScript 함수를 호출하려는 매우 간단한 Greasemonkey 스크립트가 있습니다. 나는 문서를 읽었고 아무것도 효과가없는 것 같습니다

window.setTimeout(function() { 
    alert('test') // This alert works, but nothing after it does
    myFunction() // undefined
    window.myFunction() // undefined
    document.myFunction() // undefined
}, 1000);
도움이 되었습니까?

해결책

UnsafeWindow.myfunction ();

자세한 내용 및 정보 - http://wiki.greasespot.net/unsafewindow

다른 팁

원래 페이지에서 함수를 호출하는 한 가지 방법은 다음과 같습니다.

location.href = "javascript:void(myFunction());";

약간 추악합니다. 또한 있습니다 insafewindow Greasemonkey도 제공하지만 저자는이를 사용하지 말라고 조언합니다.

unsafeWindow.myFunction();

깔끔하게 보이지만 파급 효과를 이해해야합니다. 매뉴얼에서 :

UnsafeWindow는 Greasemonkey의 xpcnativewrapper 기반 보안 모델을 우회합니다. 이는 악의적 인 웹 페이지가 Greasemonkey 스크립트 (웹 페이지에서 실행되는 일반적인 JavaScript보다 더 많은 권한으로 실행되는 경우)를 만드는 방식으로 객체를 변경할 수 없도록 존재합니다. 또는 사용자는 의도하지 않았습니다. 따라서 사용자 스크립트는 UNSAFEWINDOW의 속성에 따라 전화를 받거나 다른 방식으로 전화를 피해야합니다. 특히 @Include *와 같은 임의의 웹 페이지에서 실행되는 경우 페이지 저자가 이러한 방식으로 환경을 전복했을 수 있습니다.

다시 말해, 스크립트는 UNSAFEWINDOW를 사용하는 경우 원래 페이지 스크립트에 사용 가능한 권한을 높입니다.

JavaScript 이벤트 리스너를 사용해 볼 수 있습니다.

이들이 발생하는 객체 이벤트에 대한 응답으로 코드를 실행합니다 (예 : 페이지로드)

예를 들어 페이지로드에서 코드를 실행하려면 다음과 같습니다.

window.addEventListener('load', function () 
{
    /* code goes here */
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top