1

Greasemonkey スクリプト内から Ajax クエリを実行しようとしていますが、リモート URL からデータを読み込めません。スクリプトは、表示されているページが Ajax 呼び出しと同じドメインである場合にのみ機能するようです。例:

// ==UserScript==
// @name          Hello jQuery
// @namespace     http://www.example.com/
// @description   jQuery test script
// @include       *
// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js
// ==/UserScript==

$(document).ready(function() {
    $.get("http://www.google.com", function(data){
        alert("Data Loaded: " + data);
    });
});

// EOF

このユーザー スクリプトは、 にアクセスすると完全に機能google.comしますが、他のドメインではエラーやアラートが発生せずに失敗します。解決策は何ですか?

4

4 に答える 4

4

jQuery が使用する通常のXMLHttpRequestGM_xmlhttpRequestではなく、クロスサイト アクセスのみを行うことができます。

于 2009-04-08T01:00:26.067 に答える
0

Greasemonkey には、XMLHttpRequestGM_xmlhttpRequestに対して呼び出される関数があります。ただし、インターフェースには対応していません。したがって、jQuery で使用することはできません。これは jQuery 1.5 で動作します。XmlHttprequest

Greasemonley の jQuery Ajax は次のようになります。

$.ajax({
    url: '/p/',// this even works for cross-domain requests by default
    xhr: function(){ return new GM_XHR(); },
    type: 'POST',
    success: function(val){
        ...
    }
});

ソース: http://www.monperrus.net/martin/greasemonkey+jquery+and+xmlhttprequest+together

于 2012-01-08T23:32:20.637 に答える
-1

試すことができload(URL, [data], [func])ます。

サンプルアプリケーションで使用しましたが、別のドメインにあるにもかかわらず、Google 検索が読み込まれました。別のドメインにアクセスしようとすると、JavaScript セキュリティ アラートが表示されるという欠点があります。

それが役立つことを願っています!

PS 実際に Google 以外のドメインを試してみたところ、いくつかのエラーが発生しました。しかし、ページが受信した応答コンテンツと互換性がなかったため (JavaScript エラーなど)、エラーが発生したことがわかりました。別のドメインで作成したいくつかのページが正常に実行されることがわかりました。そのため、ロードするコンテンツの種類にも注意する必要があります。

おそらく、そのような場合は、コンテンツを iframe にロードする方がよいでしょう。

于 2009-05-27T05:25:08.883 に答える
-1

ええ、あなたはそれをすることはできません。XSSといいます

于 2009-04-08T00:58:04.747 に答える