2011-01-26 5 views
1

정말 절망적 인 문제가 있습니다. 누군가 도와 줄 수 있기를 바랍니다. 다음은 제 Greasemonkey 스크립트입니다. 왜 비동기 요청이 항상 같은 URL로 전송되는지 알 수 없습니다. 내가 피들러를 불 때 Greasemonkey 스크립트에서 GM_xmlhttpRequest의 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); 
     } 
    });  
} 

, 나는 그것을 상관없이 많은 항목이 내 컬렉션에 얼마나 동일한 요청을하지 않습니다 것을 볼 수 있습니다. 첫 번째 링크가 무엇이든간에 모든 요청이 해당 링크에 대해 이루어집니다. 나는 파스 메소드가 매번 SendData 함수에 다른 링크를 성공적으로 전달했음을 확인했지만, 요청은 항상 콜렉션의 첫 번째 URL로 이루어집니다.

나는 내가 무엇을 발견했는지는 here과 비슷한 것으로 생각했지만, 아마도 나는 뭔가를 놓쳤습니다. 어떤 도움을 주시면 감사하겠습니다.

답변

0

마치 closureurl이 캡처되지 않는 것 같습니다. 따라서 처음으로 GM_xmlhttpRequest을 실행하면 알 수없는 것 같습니다.

과 같이, 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); 
} 
+0

감사합니다 !! 나는 그것이 작은 무엇인가이어야했다라는 것을 알고 있었다! – jaltiere

+0

나는 그게 ....... 작은 의미로 나는 많이 바꿀 필요가 없다는 것을 다시 한번 말하게한다. 내가 폐쇄를 망쳤 기 때문에 큰. :) – jaltiere

관련 문제