1

나는 기적으로 행동하는 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을 사용하고 있습니다.

+0

예 ...이 "버그"로 인해 코드를 재구성해야했습니다. – w35l3y

+0

동기 요청을 사용하지 마십시오. [here] (http://stackoverflow.com/q/32338061/) 또는 [여기] (http://stackoverflow.com/a/5192249/331508) 등의 비동기 방식을 사용하십시오. –

답변

4

Google에서이 주제와 마주 쳤습니다.

동기식 GM_xmlhttpRequest 결과를 onload-callback에서 실행하는 대신 반환하십시오.

그래서 잘 될 것이다 :

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

당신은 VAR "는"처음에, 그것을 채우기하지 않고 반환 결코를 만들 수 있습니다. 따라서 정의되지 않습니다.

관련 문제