您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
日他娘的逼乎手机网页版; 针对手机版进行修改,把所有的“App 内查看”按钮屏蔽了;
- // ==UserScript==
- // @name Fuck ZhiHu Mobile
- // @namespace https://github.com/ipcjs
- // @version 2.0.2
- // @description 日他娘的逼乎手机网页版; 针对手机版进行修改,把所有的“App 内查看”按钮屏蔽了;
- // @author ipcjs
- // @include https://www.zhihu.com/*
- // @include https://zhuanlan.zhihu.com/*
- // @grant GM_addStyle
- // @require https://greasyfork.org/scripts/373283-ipcjs-lib-js/code/ipcjslibjs.js?version=647820
- // ==/UserScript==
- ipcjs.installInto(({ log, html, $ }) => {
- log = GM_info.script.name.endsWith('.dev') ? log : () => { }
- GM_addStyle(`
- .DownloadGuide {
- display: none;
- }
- .OpenInAppButton {
- display: none;
- }
- .MobileAppHeader-downloadLink {
- display: none;
- }
- /*
- button.ContentItem-more {
- position: absolute;
- }
- */
- `)
- installToContent(document)
- new MutationObserver((mutations, observer) => {
- // log(mutations)
- for (let m of mutations) {
- const $target = $(m.target)
- for (let node of m.addedNodes) {
- if (node.nodeType === Node.ELEMENT_NODE) {
- if ($(node).hasClass('RichContent-inner')
- && $target.hasClass('RichContent') && $target.hasClass('is-collapsed')) {
- log('contentInner added, need reinstall', node)
- installToContent($target.ele.parentElement)
- } else {
- installToContent(node)
- }
- }
- }
- }
- }).observe(document.body, {
- childList: true,
- subtree: true
- })
- function installToContent(node) {
- if (!node.querySelectorAll) {
- return
- }
- const contentItems = node.querySelectorAll('.RichContent')
- const collapseButtonHtml = '<button data-zop-retract-question="true" type="button" class="Button ContentItem-action ContentItem-rightButton Button--plain"><span class="RichContent-collapsedText">收起</span><span style="display: inline-flex; align-items: center;"><svg class="Zi Zi--ArrowDown ContentItem-arrowIcon is-active" fill="currentColor" viewBox="0 0 24 24" width="24" height="24"><path d="M12 13L8.285 9.218a.758.758 0 0 0-1.064 0 .738.738 0 0 0 0 1.052l4.249 4.512a.758.758 0 0 0 1.064 0l4.246-4.512a.738.738 0 0 0 0-1.052.757.757 0 0 0-1.063 0L12.002 13z" fill-rule="evenodd"></path></svg></span></button>'
- if (contentItems.length > 0) {
- log('install', contentItems)
- }
- contentItems.forEach((content, index) => {
- const contentInner = content.querySelector('.RichContent-inner')
- const actions = content.querySelector('.ContentItem-actions')
- const expandButtonOuter = content.querySelector(':scope > button')
- const expandButtonInner = contentInner.querySelector(':scope > button')
- const $content = $(content)
- let diff = {
- expandButton: undefined,
- expandButtonText: undefined,
- onClick: undefined,
- onEach: undefined,
- }
- if (expandButtonOuter) {
- diff = {
- expandButton: expandButtonOuter,
- expandButtonText: '展开阅读全文',
- onClick: function toggleContent() {
- let collapseButton = actions.querySelector('button.Button.ContentItem-rightButton')
- if ($content.hasClass('is-collapsed')) {
- $content.removeClass('is-collapsed')
- contentInner.style.maxHeight = ''
- diff.expandButton.style.display = 'none'
- collapseButton = html(collapseButtonHtml)[0]
- collapseButton.addEventListener('click', toggleContent)
- actions.appendChild(collapseButton)
- } else {
- $content.addClass('is-collapsed')
- contentInner.style.maxHeight = '400px'
- diff.expandButton.style.display = 'inline'
- actions.removeChild(collapseButton)
- }
- },
- onEach: () => { }
- }
- } else if (expandButtonInner) {
- const contentCover = content.querySelector('.RichContent-cover')
- diff = {
- expandButton: expandButtonInner,
- expandButtonText: contentCover ? '展开' : '跳转',
- onClick: function gotoDetail() {
- if (contentCover) {
- contentCover.click()
- } else {
- const urlMeta = content.parentElement.querySelector(':scope > meta[itemprop=url]')
- location.href = urlMeta.content
- }
- },
- onEach: function () {
- $content.removeClass('is-collapsed')
- }
- }
- } else {
- log('expandButton no found')
- return
- }
- diff.onEach()
- if (diff.expandButton.innerText.startsWith('App 内查看')) {
- diff.expandButton.innerText = diff.expandButtonText
- diff.expandButton.addEventListener('click', e => {
- e.stopPropagation()
- diff.onClick()
- }, true)
- } else {
- log('skip', content)
- return
- }
- contentInner.addEventListener('click', e => {
- e.stopPropagation()
- diff.onClick()
- }, true)
- })
- }
- })