ja werd ich mal nachher machen.
AutoSaveScreenshot.uc.js funktioniert nicht mehr
-
omar1979 -
28. November 2024 um 23:20 -
Erledigt
-
-
werd ich mal nachher machen.
Eben getestet, funktioniert auch im Nightly 135 einwandfrei.
-
Hast du mal Firefox neugestartet und dabei den Skript-Cache geleert? Zum Beispiel mit Rechtsklick auf das Symbol des Restart-Skripts. Vielleicht klemmt da nur etwas.
-
-
Ich mache mal nach 15 Monaten weiter.
Mein Script funktionierte bis gestern noch, jetzt nicht mehr. Auch nicht das hier aus #11.
Ein Klick auf das Symbol öffnet nur die Auswahl für Seite/Site.
Ich weiß, das ist ein Luxusproblem. Aber seit Jahren daran gewöhnt, möchte ich mich ungern umstellen. Vielleicht kann ja jemand helfen.
JavaScript
Alles anzeigen// ==UserScript== // @name AutoSaveScreenshot.uc.js // @description 一键保存截图,左键单击保存可见范围,Shift+左键保存整个页面 // @namespace https://github.com/benzBrake/FirefoxCustomize // @author Ryan, aborix // @include main // @license MIT License // @compatibility Firefox 127 // @homepageURL https://github.com/benzBrake/FirefoxCustomize/tree/master/userChromeJS // @downloadURL https://github.com/benzBrake/FirefoxCustomize/raw/master/127/AutoSaveScreenshot.uc.js // @version 0.0.3 // @note 0.0.3 修复总是在第一个窗口截图的问题 // @note 0.0.2 修复在 127 版本的兼容问题 // ==/UserScript== (async function () { // const Services = globalThis.Services || ChromeUtils.import("resource://gre/modules/Services.jsm").Services; const CustomizableUI = globalThis.CustomizableUI || ChromeUtils.import("resource:///modules/CustomizableUI.sys.mjs").CustomizableUI; document.addEventListener('DOMContentLoaded', async (e) => { const { location } = e.target; if (location.href.startsWith("chrome://browser/content/screenshots/screenshots-preview.html?")) { let preview_area = await new Promise(resolve => { let count = 0; let timer = setInterval(() => { let area = e.target.documentElement.querySelector("screenshots-preview"); count++; if (area) { clearInterval(timer); resolve(area); } if (count > 300) { clearInterval(timer); reject(null); } }, 10); }); if (preview_area) { let download_btn = await new Promise(resolve => { let count = 0; let timer = setInterval(() => { let btn = preview_area.shadowRoot.querySelector("#download"); count++; if (btn) { clearInterval(timer); resolve(btn); } if (count > 300) { clearInterval(timer); reject(null); } }, 10); }); download_btn.click(); } } }) window.AutoSaveScreenshot = { BTN_ID: "AutoSaveScreenshot-button", init() { if (!(CustomizableUI.getWidget(this.BTN_ID) && CustomizableUI.getWidget(this.BTN_ID).forWindow(window)?.node)) { CustomizableUI.createWidget({ id: this.BTN_ID, removable: true, defaultArea: CustomizableUI.AREA_NAVBAR, type: "custom", onBuild: doc => this.createButton(doc) }); } }, createButton(doc) { let btn = createElement(doc, 'toolbarbutton', { id: this.BTN_ID, label: "AutoSaveScreenshot", tooltiptext: 'Screenshots\nLinks-Klick: Sichtbarer Bereich\nShift + Links-Klick: Ganze Seite', 'data-l10n-id': 'auto-save-screenshot', class: 'toolbarbutton-1 chromeclass-toolbar-additional', style: 'list-style-image: url(file:///C:/Users/geldh/AppData/Roaming/Mozilla/Firefox/Profiles/rq9bmbv4.Neustart/chrome/Icons/Screenshot.png)', }); btn.addEventListener('click', this, false); return btn; }, handleEvent(event) { if (event.button === 0) { this.takeScreenshot(event.target.ownerDocument, event.shiftKey); } }, async takeScreenshot(doc, isFullPage) { doc.getElementById('key_screenshot').doCommand(); let btn = await this.getScreenSortButton(doc, isFullPage); btn.click(); }, async getScreenSortButton(doc, isFullPage) { let screenshotsPagePanel = await new Promise(resolve => { let interval = setInterval(() => { let screenshotsPagePanel = doc.getElementById("screenshotsPagePanel"); if (screenshotsPagePanel) { clearInterval(interval); resolve(screenshotsPagePanel); } }, 10); }); return screenshotsPagePanel.querySelector("screenshots-buttons").shadowRoot.querySelector(isFullPage ? "#full-page" : "#visible-page"); } } window.AutoSaveScreenshot.init(); /** * 创建 DOM 元素 * * @param {Document} d HTML 文档 * @param {string} t DOM 元素标签 * @param {Object} o DOM 元素属性键值对 * @returns */ function createElement(d, t, o = {}) { if (!d) return; let e = /^html:/.test(t) ? d.createElement(t) : d.createXULElement(t); for (let [k, v] of Object.entries(o)) { e.setAttribute(k, v); } return e; } })() -