GreasemonKey가로드 후 페이지에서 함수를 호출하도록하려면 어떻게해야합니까?
-
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 */
}