4

我试图获得一个GM_xmlhttpRequest同步行为的调用,但我无法让它像我期望的那样工作:

function myFunction (arg) {
    var a;

    GM_xmlhttpRequest ( {
        method:         "GET",
        url:            "http://example.com/sample/url",
        synchronous:    true,

        onload: function (details) {
            a = details.responseText;
        }
    } );

    return a;
}
b = myFunction ();
alert (b);

我从来没有在这里得到任何回报b;它是未定义的。我在这里缺少一些步骤吗?
我正在使用 Greasemonkey 的 v0.9.13 和 Firefox 的 v9.0.1。

4

1 回答 1

6

刚刚在谷歌偶然发现了这个话题。

同步 GM_xmlhttpRequest 返回结果而不是在 onload-callback 中执行它。

所以这是正确的:

var details = GM_xmlhttpRequest({
  method:"GET",
  url:"http://site.com/sample/url",
  synchronous: true
});
a = details.responseText;

您在开始时创建 var "a",从不填充并返回它。因此,它是未定义的。

于 2013-09-12T16:33:38.247 回答