您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Loop display a serial of webpages. Display time for each page can be set.
- // ==UserScript==
- // @name Webpages slideshow
- // @namespace https://github.com/aleung/
- // @version 1.1.0
- // @description Loop display a serial of webpages. Display time for each page can be set.
- // @author Leo Liang
- // @license MIT License
- // @include *
- // @noframes
- // @require https://openuserjs.org/src/libs/sizzle/GM_config.js
- // @grant GM_setValue
- // @grant GM_getValue
- // @grant GM_addStyle
- // @grant GM_addValueChangeListener
- // ==/UserScript==
- (function(){
- 'use strict';
- let redirectTimer;
- function enableRedirect(delay, url) {
- redirectTimer = window.setTimeout( () => window.location.replace(url), delay * 1000 );
- }
- function disableRedirect() {
- if (redirectTimer) {
- window.clearTimeout(redirectTimer);
- }
- }
- function currentStatus() {
- return GM_getValue('enable', false);
- }
- function getPagesConfig() {
- const pagesConfig = GM_config.get('pages');
- return pagesConfig.split('\n')
- .map(line => line.split(/,(.*)/).map(s => s.trim()))
- .filter(arr=> arr.length >= 2 );
- }
- function showStatus() {
- document.getElementById('web-slideshow-status').textContent = currentStatus() ? '\u2759 \u2759' : '\u25B6';
- }
- function play() {
- showStatus();
- if (currentStatus()) {
- const pages = getPagesConfig();
- const validPageId = (page) => (page >= pages.length) ? 0 : ((page < 0) ? pages.length - 1 : page);
- const pageId = validPageId(GM_getValue('page', 0));
- const url = pages[pageId][1];
- const delay = pages[validPageId(pageId - 1)][0];
- GM_setValue('page', pageId + 1);
- enableRedirect(delay, url);
- } else {
- disableRedirect();
- }
- }
- function setupControl() {
- GM_config.init({
- id: 'WebpageSlideshowConfig',
- title: 'Webpages Slideshow Settings',
- fields: {
- pages: {
- label: 'Pages to show. One page per line, in format of: seconds, url',
- type: 'textarea',
- default: `5, http://www.funcage.com/
- 2, http://www.currenttimestamp.com/`
- }
- },
- css: '#WebpageSlideshowConfig textarea { width: 100%; height: 20em }',
- events: {
- close: () => play()
- }
- });
- GM_addStyle(`
- #web-slideshow-control {
- padding: 4px;
- background-color: dimgrey;
- opacity: 0.66;
- position: fixed;
- right: 12px;
- bottom: 12px;
- }
- #web-slideshow-control button {
- color: white;
- background:none;
- border:none;
- margin:0;
- padding:4px;
- }
- #web-slideshow-control button:focus {
- outline: none;
- }`);
- const control = document.createElement('div');
- control.id = 'web-slideshow-control';
- control.innerHTML = `
- <button id="web-slideshow-status">?</button>
- <button id="web-slideshow-config">\u2699</button>`;
- document.body.appendChild (control);
- document.getElementById('web-slideshow-config').addEventListener (
- 'click', () => {
- GM_setValue('enable', false);
- GM_config.open();
- }, false
- );
- document.getElementById('web-slideshow-status').addEventListener (
- 'click', () => {
- GM_setValue('enable', !currentStatus());
- }, false
- );
- GM_addValueChangeListener('enable', () => {
- play();
- });
- }
- setupControl();
- play();
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址