您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A UMD build of scrollview-resize
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://updategreasyfork.deno.dev/scripts/531084/1561338/scrollview-resize-umd.js
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.SVResizeObserver = factory()); })(this, (() => { class SVResizeObserver { constructor(callback) { Object.defineProperty(this, "callback", { enumerable: true, configurable: true, writable: true, value: callback }); Object.defineProperty(this, "dataset", { enumerable: true, configurable: true, writable: true, value: [] }); } /** * Observing the specified `Element`. * * @param target - A reference to an `Element` to be observed. */ observe(target, options) { const resizeObserver = new ResizeObserver(() => this._checkChange()); for (let i = 0; i < target.children.length; i++) resizeObserver.observe(target.children[i]); const mutationObserver = new MutationObserver(() => { this._checkChange(); this.unobserve(target); this.observe.apply(this, arguments); }); mutationObserver.observe(target, { childList: true }); const [scrollWidth, scrollHeight] = [target.scrollWidth, target.scrollHeight]; this.dataset.push({ target, entrie: { target, scrollWidth, scrollHeight, previousScrollWidth: scrollWidth, previousScrollHeight: scrollHeight, }, direction: options === null || options === void 0 ? void 0 : options.direction, resize: resizeObserver, mutation: mutationObserver }); } /** * Ends the observing of a specified `Element`. * * @param target - A reference to an `Element` to be unobserved. */ unobserve(target) { const dataset = []; for (const data of this.dataset) { if (data.target === target) { data.resize.disconnect(); data.mutation.disconnect(); } else dataset.push(data); } this.dataset = dataset; } /** * Unobserves all observed `Element` targets. */ disconnect() { for (const data of this.dataset) { data.resize.disconnect(); data.mutation.disconnect(); } this.dataset = []; } _checkChange() { let hasChange = false; const entries = []; for (const data of this.dataset) { const [scrollWidth, scrollHeight] = [data.target.scrollWidth, data.target.scrollHeight]; const scrollWidthChange = data.entrie.scrollWidth !== scrollWidth; const scrollHeightChange = data.entrie.scrollHeight !== scrollHeight; switch (data.direction) { case undefined: hasChange = scrollWidthChange || scrollHeightChange; break; case 'x': hasChange = scrollWidthChange; break; case 'y': hasChange = scrollHeightChange; break; } data.entrie.previousScrollHeight = data.entrie.scrollHeight; data.entrie.previousScrollWidth = data.entrie.scrollWidth; data.entrie.scrollWidth = scrollWidth; data.entrie.scrollHeight = scrollHeight; entries.push(Object.freeze(Object.assign({}, data.entrie))); } if (hasChange) this.callback(entries, this); } } return SVResizeObserver; }));