您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Mark Baidu URL Shortest.
- // ==UserScript==
- // @name Baidu URL Shorten
- // @namespace https://github.com/wzshiming/userscripts
- // @version 0.1
- // @description Mark Baidu URL Shortest.
- // @author wzshiming
- // @match *://*.baidu.com/*
- // @grant none
- // @icon https://www.baidu.com/favicon.ico
- // @supportURL https://github.com/wzshiming/userscripts/issues
- // @license MIT License
- // ==/UserScript==
- (function () {
- 'use strict';
- sturl();
- window.addEventListener('locationchange', function () {
- sturl();
- })
- })();
- function sturl() {
- var url = window.location.href;
- var nurl = window.location.href;
- var qs = [
- 'rsv_spt', 'rsv_iqid', 'issp', 'f', 'rsv_bp', 'rsv_idx', 'ie', 'tn', 'rsv_enter', 'rsv_dl', 'rsv_sug3', 'rsv_sug1', 'rsv_sug7', 'rsv_sug2', 'rsv_btype', 'inputT', 'rsv_sug4', 'rsv_sug',
- 'base_query', 'oq', 'usm', 'rsv_pq', 'rsv_t',
- ];
- nurl = rmqs(nurl, qs);
- var qseq = [['pn', '0'], ['rn', '50']];
- nurl = rmqseq(nurl, qseq);
- if (url == nurl) {
- return false;
- }
- window.history.replaceState(null, null, nurl);
- }
- function rmqs(url, qs) {
- url = new URL(url);
- qs.forEach(function (i) {
- url.searchParams.delete(i);
- });
- return url.toString();
- }
- function rmqseq(url, qseq) {
- url = new URL(url);
- qseq.forEach(function (i) {
- if (url.searchParams.get(i[0]) == i[1]) {
- url.searchParams.delete(i[0]);
- }
- });
- return url.toString();
- }
- /*----force listen to locationchange work start----*/
- history.pushState = (f => function pushState() {
- var ret = f.apply(this, arguments);
- window.dispatchEvent(new Event('pushstate'));
- window.dispatchEvent(new Event('locationchange'));
- return ret;
- })(history.pushState);
- history.replaceState = (f => function replaceState() {
- var ret = f.apply(this, arguments);
- window.dispatchEvent(new Event('replacestate'));
- window.dispatchEvent(new Event('locationchange'));
- return ret;
- })(history.replaceState);
- window.addEventListener('popstate', () => {
- window.dispatchEvent(new Event('locationchange'))
- });
- /*----force listen to locationchange work end----*/