1

我的GM_xmlhttpReqeustGreasemonkey 脚本中有如下功能设置(简化版)。

  GM_xmlhttpRequest({
    synchronous: false,
    method: "HEAD",
    url: "http://www.example1.com",
    onload: function(response){console.debug(url);},
  });
  • GM_xmlhttpReqeust在我的代码中以异步模式调用。

  • 访问后,http://www.example1.com是否302 重定向http://www.example2.com

  • 我想在回调函数中访问原始url参数 ( http://www.example1.com)的值。onload

  • 根据GM_xmlhttpReqeust 文档http://www.example2.com可以在response.finalUrl内部onload回调中找到。

有人可以指点我正确的 Greasemonkey/JavaScript 方式吗?

4

3 回答 3

2

我在下面得到了一个愚蠢的解决方案,我希望它会起作用。

GM_xmlhttpRequest ( {
    synchronous:    false,
    method:         "HEAD",
    url:            "http://www.google.com",
    onload:         function (response) {
        console.debug (this.url);
    }
} );
于 2013-01-10T06:22:57.717 回答
2

response传递给的onload具有以下关键属性对象

  • 就绪状态
  • 响应头
  • 响应文本
  • 地位
  • 状态文本
  • 最终网址

你想要finalUrl,你会得到它:

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


修订/澄清问题的更新:

为了获取/知道最初请求的 URL,您必须调用GM_xmlhttpRequest()一个闭包。像这样:

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);
于 2013-01-10T06:40:40.627 回答
0

http://userscripts-mirror.org/topics/51161

首先你需要:

var method = this;
  var oldargs = [].slice.call( arguments, 1 );
  return function () {
    var newargs = [].slice.call( arguments );
    return method.apply( thisObject, oldargs.concat( newargs ));
  };
}

然后你走,类似的方式......

在此处输入图像描述

于 2016-11-19T04:25:13.507 回答