您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
阻止动态点击正文跳转动态页面
当前为
// ==UserScript== // @name Bilibili 哔哩哔哩阻止动态点击正文跳转 // @icon https://t.bilibili.com/favicon.ico // @namespace https://lolicon.app/ // @version 1.1.2 // @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('*:not(.bili-dyn-content__orig.reference)>.bili-dyn-content__orig__desc,.bili-dyn-content__forw__desc{cursor:unset!important}.bili-rich-text-emoji{-webkit-user-drag:none}'); const contentClassList = ['bili-rich-text__content']; const skipClassList = ['bili-rich-text-module', 'bili-rich-text-link', 'bili-rich-text-topic']; /** * @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 => hasSomeClass(element, skipClassList); document.addEventListener( 'click', e => { console.log(e); /** @type {HTMLElement} */ const $el = e.target; // 不处理动态链接 if (isSkipElement($el)) return; // 触发路径 const path = e.composedPath(); // 转发内容不处理,因为现在无法通过页面元素得到 dynamic id for (const ele of path) { if (ele.nodeName === 'BODY') break; if (hasClass(ele, 'bili-dyn-content__orig') && hasClass(ele, 'reference')) return; } // 阻止点击正文跳转到动态页面 if (isContentElement($el) || isContentElement(path[1])) { e.stopPropagation(); } }, { capture: true } ); })();