2

基本的に、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);
}

これが私のコンソール出力です: ここに画像の説明を入力してください

私は何が欠けていますか?

詳細:

Firefox20.0a1グリースモンキー
1.5

4

1 に答える 1

4

更新:GMバージョン1.9にロールインされ
たパッチを送信しました。この問題は現在、正式に解決されています。


これはGreasemonkeyのバグです。グリースモンキーのxmlhttprequester.jsソースabort、MozillaのCOWインターフェースに従って、が適切に公開されていません

関連するコード次のとおりです。

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. GM_xmlhttpRequestにabort()を提供します
  2. GM_xmlhttpRequestresponse.responseTextが未定義です...
  3. ExposurePropsを使用する

コードにパッチを適用すると、バグが修正されます。

あなたはできる:

  1. Greasemonkeyコードをフォークし、独自のバージョンを使用します(推奨)。
    および/または
  2. バグレポートを提出してください。
于 2013-01-06T20:07:02.290 に答える