您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds smooth scrolling for in-page links on Wikipedia and sister sites
当前为
- // ==UserScript==
- // @name Wikipedia Smooth Scroll
- // @description Adds smooth scrolling for in-page links on Wikipedia and sister sites
- // @version 0.1
- // @author Daniel Bronshtein
- // @grant none
- // @run-at document-idle
- // @match https://*.wikipedia.org/wiki/*
- // @match https://*.wiktionary.org/wiki/*
- // @match https://*.wikibooks.org/wiki/*
- // @match https://*.wikiquote.org/wiki/*
- // @match https://*.wikivoyage.org/wiki/*
- // @match https://*.wikisource.org/wiki/*
- // @match https://*.wikinews.org/wiki/*
- // @match https://*.wikiversity.org/wiki/*
- // @match https://*.wikifunctions.org/wiki/*
- // @namespace https://greasyfork.org/users/1450663
- // ==/UserScript==
- (function(){
- function scrollSmoothlyTo(element) {
- element.scrollIntoView({
- behavior: 'smooth'
- })
- }
- function getIdFromInternalLink(link) {
- try {
- return decodeURIComponent(link.getAttribute('href').substring(1))
- } catch (e) {
- return link.getAttribute('href').substring(1)
- }
- }
- function handleInternalLinkClick(event) {
- const link = event.currentTarget
- const id = getIdFromInternalLink(link)
- const element = document.getElementById(id)
- if (!element) return
- event.preventDefault()
- scrollSmoothlyTo(element)
- history.pushState({ scrollTo: id }, '', link.href)
- }
- document.querySelectorAll("a[href^='#']").forEach(link => {
- link.addEventListener('click', handleInternalLinkClick)
- })
- //ToDo: add smooth scrolling on popstate (when navigating back and forward)
- })()