3

Tampermonkey スクリプトでいくつかの AJAX 操作を実行したいのですが、jQuery はかなり便利だと思います。jQuery AJAX を Tampermonkey で動作させる方法がないというのは、現在でもまだなのですか?

操作は同じオリジンに対して行われないことに注意してください。これが、Tampermonkey を使用するすべての理由です。グリースモンキーもOK。

4

1 に答える 1

6

jQuery AJAX は Tampermonkey と Greasemonkey で問題なく動作しますが、Web ページでの jQuery の使用と比較して、制限が 1 つだけあります。

たとえば、次のクロスオリジン スクリプトは、Tampermonkey と Greasemonkey の両方で機能します。

// ==UserScript==
// @name     _Demonstrate jQuery AJAX from Tampermonkey
// @include  https://stackoverflow.com/questions/18546180/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @grant    GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/
$.ajax ( {
    type:       'GET',
    url:        'https://api.stackexchange.com/2.1/users/621338?site=stackoverflow&filter=!)2R0ltXnW6.fyPDiHJm',
    dataType:   'JSON',
    success:    function (apiJson) {
        var resultObj = apiJson.items[0];
        alert (
              'User ' + resultObj.display_name
            + ' has accept rate of ' + resultObj.accept_rate + '%.'
        );
    }
} );



重要:

  1. ターゲット URL が同じドメインであるか、ターゲット サーバーに適切なCORS値が設定されている必要があります。

    クロスドメインに対応していないサーバーの場合、AJAX にGM_xmlhttpRequest()Docを使用する必要があります。

  2. JSONP は、サンドボックスとスコープの問題のため、特殊なケースです。
    JSONP を避けるか、このアプローチを使用するか、特定の問題について新しい質問をしてください。

于 2013-08-31T09:36:18.700 に答える