基本上,我尝试通过 GM_xmlhttpRequest()
Greasemonkey API 发送请求并中止它。
这是一个演示脚本:
// ==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);
}
这是我的控制台输出:
我错过了什么?
详细信息:
Firefox 20.0a1
油猴1.5
最佳答案
更新:
提交的补丁为rolled into GM version 1.9 。此问题现已正式解决。
这是 Greasemonkey 中的一个错误。在 Greasemonkey's xmlhttprequester.js
source ,中止
是not exposed properly, per Mozilla's COW interface .
相关代码是:
var rv = {
__exposedProps__: {
finalUrl: "r",
readyState: "r",
responseHeaders: "r",
responseText: "r",
status: "r",
statusText: "r"
},
abort: function () { return req.abort(); }
};
但是应该是:
var rv = {
__exposedProps__: {
finalUrl: "r",
readyState: "r",
responseHeaders: "r",
responseText: "r",
status: "r",
statusText: "r",
abort: "r"
},
abort: function () { return req.abort(); }
};
查看相关错误:
- Provide abort() for GM_xmlhttpRequest
- GM_xmlhttpRequest response.responseText is undefined in...
- Use exposedProps
修补代码修复了错误。
你可以:
- fork the Greasemonkey code ,并使用您自己的版本(推荐)。
和/或 - File a bug report .
关于javascript - Greasemonkey AJAX返回的abort()不是一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14185249/