同步GM_xmlhttpRequest异步执行?

时间:2012-01-08 14:18:08

标签: synchronization greasemonkey tampermonkey gm-xmlhttprequest

我正在尝试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。

1 个答案:

答案 0 :(得分:5)

在Google中偶然发现了这个话题。

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

所以这是对的:

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

你在开头创建var“a”,永远不要填充它并返回它。因此,它是未定义的。