
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"); } }); }); }); 1 tt210 OP 找到方法了,传入参数时加 context ,里面放入想传入的东西即可。 |