AutoJump

为了应对QQ,知乎,简书...等网站不自动跳转第三方URL的问题

目前為 2022-03-03 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         AutoJump
// @name:zh-CN   自动跳转第三方URL
// @namespace    https://greasyfork.org/zh-CN/scripts/440863-autojump
// @version      1.4
// @description  为了应对QQ,知乎,简书...等网站不自动跳转第三方URL的问题
// @author       Antecer
// @include      *
// @icon64       https://antecer.gitlab.io/amusingdevice/icon/antecer.ico
// @icon         https://antecer.gitlab.io/amusingdevice/icon/antecer.ico
// @run-at       document-start
// @grant        none
// @license      MIT
// ==/UserScript==

(function () {
	'use strict';
	// 创建sleep方法(用于async/await的延时处理)
	function Sleep(ms) {
		return new Promise((resolve) => setTimeout(resolve, ms));
	}

	var jumpLink = null;
	var fromUrl = location.origin + location.pathname;
	// 规则列表
	var fromUrls = {
		'https://c.pc.qq.com/middlem.html': /(?<=pfurl=)[^&]+/, // QQ
		'https://link.zhihu.com/': /(?<=target=)[^&]+/, // 知乎
		'https://www.jianshu.com/go-wild': /(?<=url=)[^&]+/, // 简书
		'https://link.csdn.net/': /(?<=target=)[^&]+/, // csdn
	}
	// 查找规则
	if (fromUrls[fromUrl]) {
		let jumpMatch = window.location.search.match(fromUrls[fromUrl]);
		if (jumpMatch) jumpLink = decodeURIComponent(jumpMatch[0]);
	}
	// 贴吧跳转页(贴吧跳转url加密了,需要特殊对待)
	if (fromUrl == 'http://jump2.bdimg.com/safecheck/index') {
//		(async () => {
//			while (!document.querySelector('.link')) Sleep(100);
//			jumpLink = document.querySelector('.link').innerText;
//		})();
        let jumpMatch = document.documentElement.outerHTML.match(/(?<=class="link">)[^<]+/)
		if (jumpMatch) jumpLink = decodeURIComponent(jumpMatch[0]);
	}

	// 跳转到目标网页
	if (jumpLink) {
		document.documentElement.innerHTML = `正在跳转到目标网站...<br>${jumpLink}`;
		top.location = jumpLink;
	}
})();