Tampermonkey 的 GM_xmlhttpRequest 貌似不支持同步访问,只支持异步返回,于是当在循环中的时候,传入的 url 无法访问到,只能访问到最后传入的 url 。求解决方法。 demo 如下:
// ==UserScript==
// @name         Decode BaiDu Link
// @namespace    http://your.homepage/
// @version      0.1
// @description  Decode baidu Link
// @author       my
// @match        https://www.baidu.com/s*
// @grant        GM_xmlhttpRequest
// @grant        GM_setClipboard
// @require      http://www.w3school.com.cn/jquery/jquery.js
// ==/UserScript==
$(document).ready(function () {
    var sUrl = $('.t a'),
        QueryUrl;
    sUrl.map(function () {
        QueryUrl = $(this).attr('href');
        //alert(QueryUrl);
        GM_xmlhttpRequest({
            method: 'GET',
            url: QueryUrl,
            synchronous: true,
            headers: {
                'User-agent': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)',
                'Accept': 'text/html, application/xhtml+xml, */*',
            },
            onload: function(data) {
                alert(QueryUrl + '\n' + data.finalUrl);
                sUrl.map(function () {
                    if ($(this).attr('href') == QueryUrl) {
                        $(this).attr('href', data.finalUrl);
                    }
                });
            },
            onerror:function () {
                alert("error");
            }
        });
    });
});
|      1tt210 OP 找到方法了,传入参数时加 context ,里面放入想传入的东西即可。 |