Greasy Fork is available in English.
全网粘贴图片为图床链接
当前为
// ==UserScript==
// @name PasteImage
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 全网粘贴图片为图床链接
// @author Polygon
// @match *://*/*
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAAXNSR0IArs4c6QAADv1JREFUeF7tnWfsLkUVxn/4wQiWIFFBsYViABOIUkRFgxJRRLFEEKPYKCJWFAyiUYlRgmCJBQsizQISo0RBAQXBSpFmTRRIBAxESvhgix8wD+wfX+69/7vvzp6Znd19Jnlzb3LnnDnnN/vc993Z2TMb4GYCJrAqgQ3MxgRMYHUCFoivDhNYDwELxJeHCVggvgZMII2Av0HSuNlqJgQskJlMtNNMI2CBpHGz1UwIWCAzmWinmUbAAknjZquZELBAZjLRTjONgAWSxs1WMyFggcxkop1mGgELJI2brWZCwAKZyUQ7zTQCFkgaN1vNhIAFMpOJdpppBCyQNG62mgmBMQjkkcCWC58tmr/PZIomleb1wA2A/lz53FVzhrUKZHdgT+AVwDY1A3RsvQn8CfgucAHw097egh3UJJAXA/sCLwA2D87T7sZB4BbgQuBs4LwaQq5BIPq2OKwRRw1MHEMdBCSSE4f+VhlSIDs3wnhjHfPhKColcGojlCuGiG8ogRwBHD9Ewh5ztASOBE4oHf0QAjkdOKB0oh5vEgTOAF5fMpPSArkW2L5kgh5rcgSuA3YolVVJgdxTKimPMwsCRa7dIoM0S3Z7zWLanGQpAj8E9GggayshkKOBj2XNws7nSuADwMdzJp9bIAcBJ+VMwL5nT+Bg4Ku5KOQUiJ5zXJ4rcPs1gQUCuwBZnpPkFMgpgB8C+jouQUAPE9+UY6BcAtH2kYtzBGyfJrAKgefl2JaSSyDf9t4qX8iFCWjv1n7RY+YQiJbezo0O1P5MYAkCe0fvAs4hEG8lWWIm3SULgfCtKDkEciuwaZb07dQE1k/gNmCzSEjRAtHT8ipedImEZF+jIqCf+HrKHtKiBfJZ4B0hkdmJCaQR+BzwzjTTta2iBfJnYKuo4OzHBBII/AXYOsFunSaRAlH1kTujArMfE+hBYBMgpFpKpEB2yvW4vwcom86TgLY5XRmReqRAXg2cGRGUfZhATwL7A2f19HGveaRAvK09YkbsI4JA2Db4SIFoy/GBEdnZhwn0JHAyoFcterdIgWhzojYpupnA0ARUoVGbF3s3C6Q3QjuokIAFUuGkOKR6CFgg9cyFI6mQgAVS4aQ4pHoIWCD1zIUjqZCABVLhpEw9pJsBbSffcQSJWiAjmKQphHgMcBVwNXBTk9CGgLZyaGuRdm4/ucJELZAKJ2VKIf0eOBT4+RJJ1Vi9xgJZYuLcJY1A6vsUNdVetkDS5t5WLQT6vEtxCPDlSghbIJVMxNTC2AO4qEdS2mJew028BdJjEm26bgI6afaVPeHUcnKYBdJzIm2+NgGtWH2kJxidUKzjnIduFsjQMzDB8SOKrm0E/KMCNhZIBZMwtRA2Bu4OSErPTZ4W4KePCwukDz3brpPAUwBVpenb9EDx8X2d9LS3QHoCtPnaBFRTQEXH+7QnAH/t4yDI1gIJAmk3/ydwHHBUTyD7AOf09BFhboFEULSPBxDQ6tMLezLRKtiHe/qIMLdAIijax1oEPgnoWUZK2w34WYphBhsLJANUu7yPwLOAXyXA+B3w1AS7HCYWSA6q9nk/AdVXvr4Dj9qKllsgHSbPXdMIvA04scX0+c0GxdoKllsgaXNuq44ELgT00+k64DLgb8CzAR27vD3wio7+SnW3QEqR9jijJGCBjHLaHHQpAhZIKdIeZ5QELJBRTpuDLkXAAilF2uOMkoAFMsppc9ClCFggpUh7nFESsEBGOW0OuhQBC6QUaY8zSgIWyCinzUGXImCBlCLtcUZJwAIZ5bQ56FIELJBSpD3OKAlYIIWn7XbgmubzsKbkv8r+6/OQwrF4uHYCFkg7o5AeegX1NOC3q3hTeZv3AIeHjGYnUQQskCiSq/jR+RjvAn6y5DjPbESy75L93S0vAQskI1+JYz/gDwljnAy8OcHOJrEELJBYnvd7u7UpfaM36FKaynfqzTtVKXQbjoAFkon9a4Fv9vT9ckBHCbgNR8ACycD+WODoIL8nAQcF+bKb7gQskO7M1mvxfUBlM6OaChsscwBm1Hj280ACFkjgFXFjc98RUdl8MSwVgvaqVuBEdXBlgXSA1dZVx47luGfYCzivbXD/exYCFkgQ1g8BHw3ytS43PwooCJ0xvMm6tkACplY/gXQmRs62P/CtnAPY9zoJWCA9Lww9DHwRcHNPP8uYqxD0rst0dJ8wAhZIT5S6P9DPnxLtkKZ+bYmxPMZ9BCyQHlfCkcAJPey7mj4YuBrYrquh+ycTsEAS0Z0KvCnRto+ZRPmJPg5s24mABdIJ132dr2zuO+5IsO1r8ujmW2Tzvo5svxQBC2QpTP/v9O9mufXSjnaR3bWc/MFIh/a1KgELpOPFscxhMB1ddu6+ZfMt8vDOljboSsAC6UDsi8BhHfrn7FrbUWU5cx3StwWyJH2duqqjjf+1ZP/c3Z4O/Cb3IPbvZd5lroG7GnFcsUzngn20kvaGguPNcSh/gywx63r19ZQl+pXusjtwcelBZzaeBdIy4Z8C3lvxRaHdw3rz0C0PAQtkPVwvGMEO2pcB38tzbdirt5qsfg3omGLdlOvo4tqbSgrpnHG3eAL+BlmF6WuAM+N5Z/F4AHB6Fs92aoGs4xr42AifVGv7y46+nsMJWCBrID1npDe9bwc+F3552KEFsnANXN/cd+jPsTUVwr4K2HpsgVcerwWyMEFaLtU3yFibanHp56FbHAELpGGp3bFjv7ge12xifEzc9TF7TxZIs1qlVasptOOA900hkUpymL1AdF6Hii7ouccU2rbNvUhNh/H8pXmYqZ+vWm3bYuEj9nqvv9Y2a4Hc04hDT8yn1LQt/9AKElIZ1q8AP2iJRd/eWoV7VgUxrxnCrAWiE50+XeGk9A3pGcCv+zrpYb+sMNYcQkW/j+oxbg7T2Qrka8CBOYhW4lNHL5S+r0oVxiKyrwM6OqKWNkuBXN78tNJ7HlNtewLnF0ouQhgroep5zrnAcwvF3jbM7ATyz+Zh4ByOFNBv/73broAe/x4pjMUw9LakqkiqDtjQbXYCeSvwpaGpFxr/VcDZGcbKJYzFUGtZrp6VQL7QrJZkuGaqdal36XcLiq6EMFZC3az5FtH58UO22Qjkkuan1X+GpD3A2FqI+GrPcUsKYzFUHZ/9mZ6x9zWfhUBUAVEvP82xCsiDmu0n2ydcKUMJYzHUXwI6O36oNguBvBE4bSjCFYx7OKB365dtNQhjJVadM3/WsoFn6Dd5gaj6ugo+z7k9svkWeVILhJqEsRjqdwAdbzdEm7RAdG5Hzft8Sk74R4APrzJgrcJYCVeLDFpsGKJNViA68Un3HX8YgmqlY54MqMbXSqtdGIsY9bak9muVbpMViM4M1NmBbg8koP80dMOuKpGa/LE0FezWw0Md/1CyTVIgOh5Ap866TYvAEG9MTk4g+tmwz7SuC2fTENio+RZJWbJOhTg5gbwA+HEqDdtVT0BL9iXrJE9KIEOdG1j9VTWxAH/Y7MYukdakBKLlwF+UoOYxBiWghYZSR29PSiCq5vH3QafOg5cioBfeSpwyPBmBqOiCT34tdXkOP45u1LXsqxv3nG0yAglLJCdt+w4loDpmWvrN2cKuqw0Co9SpSTo9qUsLS6TLoO47KIFHNd8iW2WMIuy6skAyzpJdr0pAx3J/PiMfCyQjXLsuQ+BS4DmZhrJAMoG123IEtBVeW+JzNAskB1X7LE5AL1Xp5aroZoFEE7W/QQjs2tywRw9ugUQTtb/BCKiM7LuDR7dAgoHa3XAE9EqxHh4+NjAECyQQpl0NT0Bno6joXFSzQKJI2k8VBFSuVN8iKl8a0SyQCIr2URWB1wFnBEVkgQSBtJu6COjN0pcEhGSBBEC0i/oI7BH0ZulkBHJ14O/O+qbbEaUQ0PFvB6cYLthMRiA3AU/sCcPm0yKwXXPD/ogeaU1GIDoY56E9QNh0mgTWV1FymYyrFIjK9aecH7g1oCOH3UxghcDGzbfINolIVI3yoETbB5hFvg+SWiDsnYBKVLqZwCKBt/Q4VewDwMcjcEYKRGVDz0wISuVgXpxgZ5PpE7gIeF5CmvtHHb8QKZCdmtqxCfmgXZ2XpRjaZtIEVG3znIQMdwauTLBbyyRSIDrP4s7EoL4B6EmqmwmsSSDlvMZNgJDjwiMFosT+CKTeWOlnln5uuZnAIoGuK1p/AraNQhgtEN0YvT8xuGvg3p9aczuwMxHXbMy6CuTYyLJC0QJR2R+V/0ltuinTdgM3E1ghcFLHJVvd1IedoRItECWlU6L6VEvU/xjH+PowgYZAl3prtwCPjySXQyAqc69y932a/tdQ7aT/9nFi29ETeDJwY4cswk8KyCEQ3Wyf2yGp1bpq9UK/J33jHgBzpC7WPJ+xLY29gfPaOnX59xwC0fg6Z3DfLoGsp6+WgPWk3c9JgoCOxM2ewPkdYj07RwmhXALpe7O+Li668bqkEZ9Pwe1w5Yysq16YeilwSMe4Q2/OV8bOJRD5j7gXWY2RdgHfAdwO3N0RpLvXSUAP97RxdcOE8MLvPUoIRI/7L09I1iYm0JXALj22Oa13rJzfIBr4COD4rtm6vwl0IHAkcEKH/p265haIgjkdOKBTVO5sAssRUBWU1y/XNa1XCYEosmuBkudkp9Gw1ZgIXAfskDvgUgJRHvfkTsb+Z0WgyLVbZJCFadNDnL1mNY1ONppA0RfsSgtEsFJfzY0GbX/jIxD2Ku2yqQ8hEMWmF+q138rNBJYloFpZKgxStA0lECWp5ySHBWxsLArMgxUnoIeAJ+Z6ztGWzZACWYlN21IklKi9W205+9/HQUB7qySMsHc7UtKuQSArcWsXsKpRaJPapinJ2Gb0BG4DLmiq44Tuyk0lU5NAFnPQStfKJ+eB86ncbBdHQEUDtTK18onzHOCpVoEspqZqKVsufLZo/h6Qvl0UJnA9cAOgP1c+IdVHcuUxBoHkyt1+TaCVgAXSisgd5kzAApnz7Dv3VgIWSCsid5gzAQtkzrPv3FsJWCCtiNxhzgQskDnPvnNvJWCBtCJyhzkTsEDmPPvOvZWABdKKyB3mTMACmfPsO/dWAhZIKyJ3mDMBC2TOs+/cWwlYIK2I3GHOBCyQOc++c28lYIG0InKHOROwQOY8+869lYAF0orIHeZM4H9dhnvniYwwoQAAAABJRU5ErkJggg==
// @grant GM_xmlhttpRequest
// @grant GM_addStyle
// ==/UserScript==
(function() {
'use strict';
const notification = (function() {
'use strict';
GM_addStyle(`
#notification {
box-sizing: border-box;
position: fixed;
left: calc(50% - 365.65px / 2);
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
height: 50px;
background-color: #ff7675;
border-radius: 50px;
padding: 0 0px 0px 20px;
top: -50px;
transition: top .5s ease-out;
z-index: 9999999999;
font-family: Arial;
}
#notification .content {
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 25px;
}
#notification .closeBox {
margin: 0 10px;
transform: rotate(90deg);
cursor: pointer;
}
#notification .closeBox .progress {
margin: 0 10px;
cursor: pointer;
}
#notification .closeBox .progress .circle {
stroke-dasharray: 100;
animation: progressOffset 0s linear;
}
@keyframes progressOffset {
from {
stroke-dashoffset: 100;
}
to {
stroke-dashoffset: 0;
}
}
`)
return {
open(info, timeout, autoClose=true) {
let eles = document.querySelectorAll('#notification')
for (let i=0;i<eles.length;i++) {
this.close(eles[i])
}
this.box = document.createElement('div')
this.box.setAttribute('id', 'notification')
this.box.innerHTML = `
<div class="content"></div>
<svg class="closeBox" width="40" height="40">
<g class="close" style="stroke: white; stroke-width: 2; stroke-linecap: round;">
<line x1="13" y1="13" x2="27" y2="27"/>
<line x1="13" y1="27" x2="27" y2="13"/>
</g>
<g class="progress" fill="transparent" stroke-width="3">
<circle class="background" cx="20" cy="20" r="16" stroke="rgba(255,255,255,0.15)"/>
<circle class="circle" cx="20" cy="20" r="16" stroke="rgba(255,255,255,1)"/>
</g>
</svg>
`
document.body.appendChild(this.box)
this.box.querySelector('.content').innerHTML = info
let width = getComputedStyle(this.box).width
this.box.style.left = `clac(50%-${width}/2)`
this.box.querySelector('.closeBox .progress .circle').style['animation-duration'] = `${timeout}s`
this.box.style.top = '100px'
this.box.querySelector('.closeBox .progress').addEventListener('click', () => {
console.log('you close...')
this.close()
console.log('you clear...')
})
if (autoClose) {
setTimeout(() => {
console.log('timeout close...')
this.close()
console.log('timeout clear ...')
}, timeout * 1000)
}
},
close(ele=null) {
if (!ele) {ele=this.box}
ele.style['transition-duration'] = '.23s'
ele.style['transition-timing-function'] = 'eaer-out'
ele.style.top = '-50px'
setTimeout(() => {
try {
document.body.removeChild(this.box)
} catch {
console.log('clear')
}
}, 233)
}
}
})()
document.addEventListener('paste', function(event) {
var items = (event.clipboardData && event.clipboardData.items) || [];
var file = null;
function insertText(obj, str) {
obj.focus()
if(document.selection) {
var sel = document.selection.createRange();
sel.text = str;
} else if(typeof obj.selectionStart === 'number' && typeof obj.selectionEnd === 'number') {
var startPos = obj.selectionStart,
endPos = obj.selectionEnd,
cursorPos = startPos,
tmpStr = obj.value;
obj.value = tmpStr.substring(0, startPos) + str + tmpStr.substring(endPos, tmpStr.length);
cursorPos += str.length;
obj.selectionStart = obj.selectionEnd = cursorPos;
} else {
obj.value += str;
}
}
if (items && items.length) {
for (var i = 0; i < items.length; i++) {
if (items[i].type.indexOf('image') !== -1) {
notification.open('upload image...', 1)
let fileObj = items[i].getAsFile();
console.log(fileObj)
// https://www.cnblogs.com/hg-hsd/p/5999472.html
var form = new FormData()
form.append("image", fileObj)
console.log(form)
GM_xmlhttpRequest({
method: 'POST',
url: 'https://yh-pic.ihcloud.net/api/jd.php',
responseType: 'json',
data: form,
onload: function (res) {
let imgURL = res.response.data.url
console.log(imgURL)
navigator.clipboard.writeText(imgURL)
insertText(document.activeElement, imgURL)
notification.open('success~', 1)
}
})
break;
}
}
}
});
})();