javascriptgreasemonkeyasynccallbackgm-xmlhttprequest

How to find the request-URL from inside Greasemonkey's GM_xmlhttpRequest "onload" callback in case of 302 redirect?


I have a GM_xmlhttpReqeust function setup as follows (simplified version) in my Greasemonkey script.

  GM_xmlhttpRequest({
    synchronous: false,
    method: "HEAD",
    url: "http://www.example1.com",
    onload: function(response){console.debug(url);},
  });

Could someone please point me to the proper Greasemonkey/JavaScript way?


Solution

  • The response passed to onload is an object with these key properties:

    You want finalUrl, you get it like:

    GM_xmlhttpRequest ( {
        synchronous:    false,
        method:         "HEAD",
        url:            "http://www.google.com",
        onload:         function (response) {
            console.debug (response.finalUrl);
        }
    } );
    


    Update for revised/clarified question:

    In order to get/know the originally requested URL, you must call GM_xmlhttpRequest() in a closure. Like so:

    var origURL = "http://www.google.com";
    
    (function (targURL) {
        GM_xmlhttpRequest ( {
            synchronous:    false,
            method:         "HEAD",
            url:            targURL,
            onload:         function (response) {
                console.log ("orig URL: ", targURL);
                console.log ("final URL: ", response.finalUrl);
            }
        } );
    } ) (origURL);