【问题标题】:Greasemonkey AJAX return's abort() is not a function?Greasemonkey AJAX 返回的 abort() 不是函数?
【发布时间】:2013-01-06 18:21:21
【问题描述】:

基本上,我尝试通过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
Greasemonkey 1.5

【问题讨论】:

  • 如果有人想知道,the return value 总是应该有一个名为 abort 的方法。

标签: javascript ajax greasemonkey gm-xmlhttprequest


【解决方案1】:

更新:
提交了一个补丁 rolled into GM version 1.9。此问题现已正式解决。


这是 Greasemonkey 中的一个错误。在Greasemonkey's xmlhttprequester.js source 中,abortnot 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(); }
};


查看相关错误:

  1. Provide abort() for GM_xmlhttpRequest
  2. GM_xmlhttpRequest response.responseText is undefined in...
  3. Use exposedProps

修补代码修复错误。

你可以:

  1. fork the Greasemonkey code,并使用您自己的版本(推荐)。
    和/或
  2. File a bug report

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 2011-03-09
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多