您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在 iqdb 中使用 Ctrl + V 上传图片
- // ==UserScript==
- // @name iqdb Ctrl + V
- // @name:en iqdb Ctrl + V
- // @namespace http://tampermonkey.net/
- // @version 0.1.4
- // @description 在 iqdb 中使用 Ctrl + V 上传图片
- // @description:en Upload image to iqdb by Ctrl + V
- // @author apkipa
- // @match https://*.iqdb.org/*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- function extractImageFilesFromClipboard(event) {
- var clipboardData = event.clipboardData || window.clipboardData;
- var files = clipboardData.files;
- var a = new DataTransfer();
- for (var i = 0; i < files.length; i++) {
- if (files[i].type.indexOf("image") !== -1) {
- a.items.add(files[i]);
- }
- }
- if (a.files.length < 1) {
- return null;
- }
- return a.files;
- }
- function extractTextFromClipboard(event) {
- var clipboardData = event.clipboardData || window.clipboardData;
- return clipboardData.getData('Text');
- }
- function createFilelistFromSingleFile(file) {
- var a = new DataTransfer();
- a.items.add(file);
- return a.files;
- }
- function isHttpURL(text) {
- var url;
- try {
- url = new URL(text);
- } catch(_) {
- return false;
- }
- return url.protocol === "http:" || url.protocol === "https:";
- }
- function handlePaste(e) {
- var files = extractImageFilesFromClipboard(e);
- if (files !== null) {
- e.stopPropagation();
- e.preventDefault();
- var fileInput = document.getElementById("file");
- /* ? Not working here
- fileInput.addEventListener("change", () => {
- formUpload.form.submit();
- });
- */
- fileInput.files = createFilelistFromSingleFile(files[0]);
- }
- else {
- console.log("Paste event does not contain images. Assuming text is pasted.");
- var text = extractTextFromClipboard(e);
- if (text == "") {
- console.log("No text in paste event, event is propagated.");
- return;
- }
- if (!isHttpURL(text)) {
- console.log("Pasted text is not a URL, event is propagated.");
- return;
- }
- var urlInput = document.getElementById("url");
- e.stopPropagation();
- e.preventDefault();
- urlInput.value = text;
- }
- // Automatically submit the pasted data
- // (If this is not desired behavior, comment the line containing submit())
- var formUpload = document.querySelectorAll("input[type=submit]")[0];
- formUpload.form.submit();
- }
- window.addEventListener('paste', handlePaste);
- })();