在新标签页中打开

在新标签页中打开scp-wiki-cn

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         在新标签页中打开
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  在新标签页中打开scp-wiki-cn
// @author       502y
// @match        *://scp-wiki-cn.wikidot.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=wikidot.com
// @license      MIT
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    let count = 0;
    const maxCount = 1; 

    const intervalId = setInterval(function() {
        document.body.addEventListener('click', function(event) {
            if (event.target.tagName === 'A') {
                const anchorId = event.target.className;
                console.log(anchorId);
                // 检查 <a> 标签是否为按钮
                if (anchorId && anchorId.includes("btn")) {
                    return;
                }

                const targetUrl = event.target.href.toString();
                console.log(targetUrl);
                if(!targetUrl){
                    return;
                }

                let ifOffset = targetUrl.match(/^(https?:\/\/scp-wiki-cn\.wikidot\.com\/[a-zA-Z0-9\-]+)\/offset\/\d+$/i)?true:false;
                let ifJS = targetUrl.toLowerCase().includes("javascript:;");
                let ifSidebar = targetUrl.toLowerCase().includes("#side-bar")||targetUrl.toLowerCase().includes("###");
                let ifNavigator = targetUrl.toLowerCase().includes("#toc") || (targetUrl.match(/^(https?:\/\/scp-wiki-cn\.wikidot\.com\/[a-zA-Z0-9\-]+)#[a-zA-Z0-9]+$/i)?true:false);

                if (!ifOffset&&!ifJS&&!ifSidebar&&!ifNavigator) {
                    event.target.setAttribute('target', '_blank');
                }
            }
        });
        count++;

        if (count >= maxCount) {
            clearInterval(intervalId);
        }
    }, 200);

})();