1

私は同期動作するようにGM_xmlhttpRequestコールを取得しようとしているが、私は期待するように私はそれを動作させることはできません。同期G​​M_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

同期要求を使用しないでください。 [ここ](http://stackoverflow.com/q/32338061/)または[ここ](http://stackoverflow.com/a/5192249/331508)などの非同期アプローチを使用してください。 –

答えて

4

Googleでこのトピックをちょっと見つけました。

同期G​​M_xmlhttpRequest結果をonload-callbackで実行する代わりに返します。

だから、これは右のようになります。

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

あなたはVARを作成する「」初めに、それを埋めるいないし、それを返すん。したがって、未定義です。

関連する問題