페이지에서 Ajax 호출을 도용하기 위해 XMLHttpRequest.prototype.open
함수에 과부하를 걸기 원하는 Greasemonkey 스크립트를 작성하고 있습니다.GM 스크립트에 @grant를 추가하면 XMLHttpRequest.prototype.open의 오버로드가 손상됩니다.
나는 다음과 같은 코드를 사용하고 있습니다 : I는 GM의 API를 사용하여 시작할 때까지
이// ==UserScript==
// @name name
// @namespace namespace
// @description desc
// @include https://url*
// @version 1.0
// ==/UserScript==
if (XMLHttpRequest.prototype) {
//New Firefox Versions
XMLHttpRequest.prototype.realOpen = XMLHttpRequest.prototype.open;
var myOpen = function(method, url, async, user, password) {
//call original
this.realOpen (method, url, async, user, password);
myCode();
}
//ensure all XMLHttpRequests use our custom open method
XMLHttpRequest.prototype.open = myOpen ;
}
이 잘 작동합니다. 난 그냥 메타 섹션 내 코드 나누기를 다음 줄을 추가하고 myOpen
가 더 이상 호출되지 않을 때 :
// @grant GM_getValue
이는 정말 GM의 API, 내 코드 중단 될 수 있습니다. GM API를 사용해도 내 스크립트의 다른 모든 기능은 정상적으로 작동하지만, 이는 깨지는 기능 인 XMLHttpRequest.prototype.open
의 과부하 일뿐입니다.
waitForKeyElements
을 사용하여 문제를 해결할 수 있지만 사용하는 간격 때문에 브라우저 속도가 느려지므로 마음에 들지 않습니다.
왜 GM API가 XMLHttpRequest.prototype.open
호출의 과부하를 깰 수 있습니까?
많은 감사,
피터
'waitForKeyElements'가 실제로 페이지 속도를 떨어 뜨리는 경우가 있습니다.보고 싶습니다. (원래 waitForKeyElements 코드를 작성 했으므로 비용 효율적으로 가능한 버그와 성능 문제를 제거하고 싶습니다.) –