GreaseMonkey:GM_xmlhttpRequest返回调用函数的值

时间:2011-08-25 20:29:15

标签: javascript greasemonkey

我已经乱了几个小时,我把头发拉出来。如何从myFunction返回var a以允许将其设置为var b,然后在警告消息中显示b的值?谢谢! :)

function myFunction(arg)
{
var a;

GM_xmlhttpRequest({
  method:"GET",
  url:"http://site.com/arg?" + arg,
  headers:{
    "User-Agent":"monkeyagent",
    "Accept":"text/monkey,text/xml",
    },
  onload:function(details) {
    a = details.responseText;


  }
});

return a;

}

b = myFunction("blabla");
alert(b);

当我尝试它时只返回一条空白消息。

1 个答案:

答案 0 :(得分:1)

由于a异步操作,您无法返回GM_xmlhttpRequest

myFunction返回后,onload函数将激活很长时间。你想要用a做的任何事情都必须从onload函数中调用的函数完成。

Greasemonkey 只是 添加了对同步模式的支持,从版本0.9.9开始。如果必须,您可以下载版本0.9.10的预发布版here

但是,你会很聪明地学会异步处理这种事情。您将获得更快,响应更快的UI,而不是“挂起”和“冻结”。对于各种现实生活中的编程情况来说,这是一个很好的概念。