Basically, I try to send a request via the GM_xmlhttpRequest()
Greasemonkey API and abort it.
Here is a demo script:
// ==UserScript==
// @name example
// @namespace example795cb636-1f35
// @include https://www.google.com/
// ==/UserScript==
var ret = GM_xmlhttpRequest({
method: "GET",
url: "https://www.google.com/",
onerror: function(response) {
console.log("error : " + response.statusText);
},
onabort: function(response) {
console.log("abort : " + response.statusText);
},
onload: function(response) {
console.log("complete : " + response.statusText);
}
});
try{
ret.abort();
}
catch(e){
console.log(ret);
console.log(e);
}
Here is my console output:
What am I missing?
Details:
Firefox 20.0a1
Greasemonkey 1.5
Update:
Submitted a patch that was rolled into GM version 1.9. This issue is now officially resolved.
This is a bug in Greasemonkey. In Greasemonkey's xmlhttprequester.js
source, abort
is not exposed properly, per Mozilla's COW interface.
The relevant code is:
var rv = {
__exposedProps__: {
finalUrl: "r",
readyState: "r",
responseHeaders: "r",
responseText: "r",
status: "r",
statusText: "r"
},
abort: function () { return req.abort(); }
};
but should be:
var rv = {
__exposedProps__: {
finalUrl: "r",
readyState: "r",
responseHeaders: "r",
responseText: "r",
status: "r",
statusText: "r",
abort: "r"
},
abort: function () { return req.abort(); }
};
See related bugs:
Patching the code fixes the bug.
You can: