您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
upload multiple files
// ==UserScript== // @name sis001 upload multiple file // @namespace http://tampermonkey.net/ // @homepageURL https://github.com/fear1999/tampermonkey-scripts // @supportURL https://greasyfork.org/zh-CN/scripts/477276/feedback // @version 0.5 // @description upload multiple files // @author fear1999 // @match https://sis001.com/forum/post.php?action=newthread* // @match https://sis001.com/forum/post.php?action=edit* // @match https://sis001.com/forum/post.php?action=reply* // @icon https://www.google.com/s2/favicons?sz=64&domain=sis001.com // @grant none // @license MIT // ==/UserScript== class MultiUpload { constructor() { this.configMultipleInput = this.configMultipleInput.bind(this) this.customInsertAttach = this.customInsertAttach.bind(this) this.replaceInput = this.replaceInput.bind(this) this.createFileList = this.createFileList.bind(this) } main() { this.configMultipleInput() this.origainalInsertAttach = globalThis.insertAttach globalThis.insertAttach = this.customInsertAttach } configMultipleInput() { Array.from( document .getElementById('posteditor_bottom') .getElementsByTagName('input') ).forEach((ele) => { if (ele.name == 'attach[]') { this.replaceInput(ele, (newInput) => { newInput.setAttribute('multiple', 'multiple') }) } }) } customInsertAttach(id) { let input = document.getElementById('attach_' + id) let files = input.files Array.from(files) .forEach((file, index) => { let currentId = id + index let currentInput = document.getElementById('attach_' + currentId) this.replaceInput(currentInput, (newInput) => { newInput.files = this.createFileList(file) }) this.origainalInsertAttach(currentId) }) } replaceInput(old, op) { let newInput = old.cloneNode() newInput.onchange = old.onchange op(newInput) old.parentElement.replaceChild(newInput, old) return newInput } createFileList(file) { let newList = new DataTransfer() newList.items.add(file) return newList.files } } (new MultiUpload()).main()