您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds the ability to toggle the main sidebar on Spotify Web using a keyboard shortcut (ctrl + alt + B), original code from https://github.com/dumptyd/slack-sidebar-toggler
- // ==UserScript==
- // @name Spotify Web Sidebar Toggler
- // @description Adds the ability to toggle the main sidebar on Spotify Web using a keyboard shortcut (ctrl + alt + B), original code from https://github.com/dumptyd/slack-sidebar-toggler
- // @author dearrrfish (http://github.com/dearrrfish)
- // @version 1.2.0
- // @namespace http://github.com/dearrrfish
- // @include https://open.spotify.com/*
- // @grant GM_addStyle
- // ==/UserScript==
- (function () {
- 'use strict';
- const combinator = {
- on(passedCombination, callback) {
- const combination = passedCombination.map(c => c.toLowerCase());
- let buffer = [];
- let skipNextKeyUp = false;
- const isCombinationMet = () => buffer.toString() === combination.toString();
- document.addEventListener('keydown', e => {
- const key = e.key.toLowerCase();
- buffer.push(key);
- if (isCombinationMet()) {
- buffer.pop();
- if (buffer.length) skipNextKeyUp = true;
- callback();
- }
- });
- document.addEventListener('keyup', e => {
- if (skipNextKeyUp) {
- skipNextKeyUp = false;
- return;
- }
- buffer = [];
- });
- }
- };
- const onLoad = callback => {
- const loadedStates = ['loaded', 'interactive', 'complete'];
- if (loadedStates.includes(document.readyState)) {
- callback();
- }
- else {
- window.addEventListener('load', () => {
- callback();
- });
- }
- };
- const style = {
- leftSidebarCollapsedClassName: 'SST-left-sidebar-collapsed',
- containerSelector: '.Root__top-container',
- navbarSelector: '.Root__nav-bar',
- mainviewSelector: '.Root__main-view',
- topbarSelector: '.Root__top-bar header',
- nowplayingbarSelector: '.Root__now-playing-bar footer .now-playing-bar',
- };
- GM_addStyle(`
- .${style.leftSidebarCollapsedClassName} ${style.topbarSelector} {
- max-width: 100vw;
- }
- ${style.containerSelector} {
- transition: .2s;
- }
- .${style.leftSidebarCollapsedClassName} ${style.navbarSelector} {
- width: 0;
- opacity: 0;
- transition: width .2s, opacity .2s;
- }
- ${style.mainviewSelector} {
- transition: width .2s;
- }
- ${style.mainviewSelector} > div.nav-bar-toggler {
- position: absolute;
- left: 0;
- top: 0;
- bottom: 0;
- width: 7px;
- height: 100%;
- display: block;
- }
- ${style.mainviewSelector} > div.nav-bar-toggler:hover {
- cursor: e-resize;
- content: linear-gradient(#e66465, #9198e5);
- }
- `);
- GM_addStyle(`
- body {
- font-family: Microsoft Yahei;
- }
- @media screen and (max-width: 700px) {
- body {
- min-width: unset;
- }
- ${style.nowplayingbarSelector} {
- width: 100%;
- min-width: unset;
- max-width: 100vw;
- min-height: 70px;
- padding: 10px 20px;
- height: unset;
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- }
- ${style.nowplayingbarSelector} .now-playing-bar__left {
- width: auto;
- order: 1;
- }
- ${style.nowplayingbarSelector} .now-playing-bar__center {
- width: 100%;
- order: 3;
- }
- ${style.nowplayingbarSelector} .now-playing-bar__right {
- max-width: 25%;
- min-width: unset;
- order: 2;
- }
- ${style.nowplayingbarSelector} .now-playing-bar__right__inner {
- width: 100%;
- }
- }
- `)
- function toggleSideBar() {
- document.body.classList.toggle(style.leftSidebarCollapsedClassName);
- }
- onLoad(() => {
- combinator.on(['Control', 'Alt', 'B'], () => {
- toggleSideBar();
- });
- const checkMainViewExist = setInterval(() => {
- const mainview = document.querySelector(style.mainviewSelector);
- if (mainview) {
- const toggler = document.createElement('div');
- toggler.classList.add('nav-bar-toggler')
- toggler.onmousedown = (evt) => {
- evt.preventDefault();
- toggleSideBar();
- }
- mainview.appendChild(toggler);
- clearInterval(checkMainViewExist);
- }
- }, 500)
- });
- })();