繁体   English   中英

我无法弄清楚为什么Greasemonkey脚本中的GM_xmlhttpRequest的URL不会更改

[英]I can't figure out why the URL won't change for my GM_xmlhttpRequest in my Greasemonkey script

我遇到了一个非常令人沮丧的问题,希望有人可以帮助我。 这是我的Greasemonkey脚本的一部分,我不明白为什么异步请求总是发送到相同的URL。

function parse(details) {
     var element = $(details);
     var coll = element.find("#my valid selector");

     $.each(coll, function(index, href) { 
          SendData(href);
     });
 }

 function SendData(url) {
      GM_xmlhttpRequest ({
       method: 'GET',
       url: url,
       headers: {
        'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
        'Accept': 'application/atom+xml,application/xml,text/xml',
       },
       onload: function(responseDetails) {
          doSomething(responseDetails.responseText);
       }
     });    
}

当我启动Fiddler时,无论集合中有多少物品,我都可以看到它发出了相同的请求。 无论第一个链接是什么,所有请求都将发送到该链接。 我已经验证过parse方法每次都成功地将一个不同的链接传递给SendData函数,但始终对集合中的第一个URL发出请求。

我以为我的东西与在这里找到的东西相似,但是也许我缺少了一些东西。 任何帮助,将不胜感激。

似乎url并未在闭包中捕获,因此除了第一次运行GM_xmlhttpRequest ,所有url均未定义。

修改SendData() ,如下所示:

function SendData(url)
{
    var moreSubstantial = url + " ";

    GM_xmlhttpRequest(
    {
        method:     'GET',
        url:        moreSubstantial,

应该足够了。


或者,您可以按顺序获取页面。 parse()更改为:

function parse (details)
{
    var element     = $(details);
    var coll        = element.find("#my valid selector");
    var TargetPages = coll.map (function() {return this.href;} );

    (function getNextPage (J)
    {
        var PageURL = TargetPages[J];

        GM_xmlhttpRequest
        ( {
            method:     "GET",
            url:        PageURL,
            headers:    {
                            'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
                            'Accept': 'application/atom+xml,application/xml,text/xml',
                        },
            onload:     function (responseDetails)
                        {
                            doSomething (responseDetails.responseText);

                            if (--J >= 0)
                                getNextPage (J);
                        }
        } );
    } ) (TargetPages.length - 1);
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM