您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
阻止动态点击正文跳转动态页面
当前为
// ==UserScript== // @name Bilibili 哔哩哔哩阻止动态点击正文跳转 // @icon https://t.bilibili.com/favicon.ico // @namespace https://lolicon.app/ // @version 1.1.1 // @description 阻止动态点击正文跳转动态页面 // @author Jindai Kirin // @match https://t.bilibili.com/* // @match https://space.bilibili.com/* // @license MIT // @grant GM_addStyle // ==/UserScript== (function () { 'use strict'; GM_addStyle('.description.active{cursor:unset!important}.up-info-tip:hover{color:#ff85ad!important;cursor:pointer}'); const contentClassList = ['content-full', 'content-ellipsis', 'content']; /** * @param {HTMLElement} element * @param {string} className */ const hasClass = (element, className) => element.classList.contains(className); /** * @param {HTMLElement} element * @param {string[]} classNameList */ const hasSomeClass = (element, classNameList) => classNameList.some(className => hasClass(element, className)); /** * @param {HTMLElement} element */ const isContentElement = element => hasSomeClass(element, contentClassList) && !hasClass(element.parentElement, 'user-panel'); /** * @param {HTMLElement} element */ const isSkipElement = element => hasClass(element, 'dynamic-link-hover-bg'); /** * @param {HTMLElement} element */ const isNeedClickParentElement = element => hasClass(element, 'lottery-btn'); document.addEventListener( 'click', e => { /** @type {HTMLElement} */ const $el = e.target; // 不处理动态链接 if (isSkipElement($el)) return; // 扩大互动抽奖按钮点击范围(B站自己就没处理好,原本点 icon 是不能打开抽奖面板的) if (isNeedClickParentElement($el)) { e.stopPropagation(); e.preventDefault(); $el.parentElement.click(); return; } // 提供转发原文跳转到动态页面的方式 if (hasClass($el, 'up-info-tip')) { try { const did = $el.parentElement.parentElement.parentElement.getAttribute('data-ori-did'); if (did) window.open(`https://t.bilibili.com/${did}?tab=2`, '_blank'); } catch (e) { console.error(e); } } // 阻止点击正文跳转到动态页面 if (isContentElement($el) || isContentElement(e.composedPath()[1])) { e.stopPropagation(); } }, { capture: true } ); })();