前端小试身手(6)--IMG複製大师,懒人专用小脚本

目录

前端小试身手(1)--帮「发问/发文页」新增"编辑"钮~
前端小试身手(2)--it帮跳转到最佳解答
前端小试身手(3)--增添系列文目录
前端小试身手(4)--it帮发文「一眼全览」
前端小试身手(5)-备份it帮的发问!
前端小试身手(6)--IMG複製大师,懒人专用小脚本
前端小试身手(7)--迷片静音神队友,让你尴尬不再有!
前端小试身手(8)--教你写出「思想审查警卫」,过滤垃圾杂讯的利器!
前端小试身手(9)--文章缩图预览(以codeLove论坛为例)

前情提要

有时候我们需要使用一些图片,势必需要图片的网址,这时候,
也许你可以本机上传,然后去把网址抓好,
又或者你可以找到网路上别人的图片,右键开启新分页,再複製网址;
又或者直接打开检查(F12)找到src的网址去複製。

光听这个流程我就觉得,心累。
这时候前端大师,就会写一套简单的小脚本来完成这个白烂的工作。

脚本下载


https://greasyfork.org/zh-TW/scripts/477141-img%E8%A4%87%E8%A3%BD%E5%A4%A7%E5%B8%AB

JS程式码

// ==UserScript==// @name         IMG複製大师// @namespace    http://tampermonkey.net/// @version      0.1// @description  针对网页上图片,点击就複製其网址// @author       You// @match         *://*/*// @icon         https://www.highcharts.com/demo/highcharts/spline-plot-bands// @grant        none// ==/UserScript==let isEventActive = false; // 用于跟蹤事件的状态// 创建一个链接元素并设置其属性const toastrCssLink = document.createElement('link');toastrCssLink.rel = 'stylesheet';toastrCssLink.href = 'https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/css/toastr.min.css';// 创建一个脚本元素并设置其属性const toastrScript = document.createElement('script');toastrScript.src = 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js';// 创建另一个脚本元素并设置其属性const toastrScript2 = document.createElement('script');toastrScript2.src = 'https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js';// 将链接元素和脚本元素添加到文档头部document.head.appendChild(toastrCssLink);document.head.appendChild(toastrScript);document.head.appendChild(toastrScript2);// 获取页面上的所有img元素const images = document.querySelectorAll('img');function removeClickHandler(image) {    image.removeEventListener('click', clickHandler);}function toggleEvent() {    if (isEventActive) {        // 如果事件已经激活,则关闭事件        console.log('IMG複製大师关闭ꐦ°᷄д°᷅');        // 解除事件监听        images.forEach(removeClickHandler);        isEventActive = false;    } else {        // 如果事件尚未激活,则打开事件        console.log('IMG複製大师启动ฅ^•ﻌ•^ฅ');        // 遍历所有img元素        images.forEach((image) => {            // 检查图像是否已加载            if (image.complete) {                // 图像已加载,直接添加点击事件处理程序                addClickHandler(image);            } else {                // 图像尚未加载,等待加载完成后再添加点击事件处理程序                image.addEventListener('load', () => {                    addClickHandler(image);                });            }        });        isEventActive = true;    }}document.addEventListener('keydown', (event) => {    if ((event.key === 'q' && event.ctrlKey) || event.key === 'F8') {        toggleEvent(); // 切换事件的状态    }});function transformImageUrl(url) {    // 使用正则表达式匹配URL中的目标部分    const regex = /https:\/\/cache.ptt.cc\/c\/https\/i.imgur.com\/([^?]+)/;    const match = url.match(regex);    if (match) {        // 如果匹配成功,构建新的URL        const imgurId = match[1];        return `https://i.imgur.com/${imgurId}`;    } else {        // 如果没有匹配到目标部分,返回原始URL        return url;    }}// 创建一个函数,用于添加点击事件处理程序并处理图像的srcfunction addClickHandler(image) {    image.addEventListener('click', clickHandler);}// 创建一个函数,用于处理点击事件function clickHandler() {    let src = this.src;    src = transformImageUrl(src);    const textArea = document.createElement('textarea');    textArea.value = src;    document.body.appendChild(textArea);    textArea.select();    document.execCommand('copy');    document.body.removeChild(textArea);    // 使用 toastr 进行通知    toastr.success('网址複製完成: ' + src);}

观念笔记

这个小脚本总共使用了大概三种观念,
第一种就是toast的套件使用,
第二个是监听键盘做开关,
第三个则是程式本身对于img的监听,把src複製到剪贴簿。

第一部分:套件

使用套件在于脚本,必须利用appendChild,先使用create的API製作出放置CDN的link元素,
再把它append到网页上,则可以使用其套件。

第二部分:监听键盘

这脚本启动与关闭是透过监听键盘的,ctrl+q或F8这部分就是纯粹监听。

document.addEventListener('keydown', (event) => {    if ((event.key === 'q' && event.ctrlKey) || event.key === 'F8') {        toggleEvent(); // 切换事件的状态    }});

里面写了一个toggleEvent是因为想要设定可以开开关关。

第三部分:程式本身

这边有一点小技巧是複製到剪贴簿,其实以前文章也有写过教学,是个常见实用的招数:

    const textArea = document.createElement('textarea');    textArea.value = src;    document.body.appendChild(textArea);    textArea.select();    document.execCommand('copy');

再来就是针对网页上全部的img元素,去监听点击事件、移除事件这两个。

const images = document.querySelectorAll('img');function addClickHandler(image) {    image.addEventListener('click', clickHandler);}function removeClickHandler(image) {    image.removeEventListener('click', clickHandler);}

之后这两个事件要写在toggle里面,当开启的条件就执行新增事件;关闭就执行解除绑定

开启也就是:

  images.forEach((image) => {            // 检查图像是否已加载            if (image.complete) {                // 图像已加载,直接添加点击事件处理程序                addClickHandler(image);            } else {                // 图像尚未加载,等待加载完成后再添加点击事件处理程序                image.addEventListener('load', () => {                    addClickHandler(image);                });

关闭则是:
images.forEach(removeClickHandler);

心得

这次的小脚本功能非常简单,写起来逻辑也是很清晰透明,没有什么弯曲。
虽然简单,但是写起来功能非常实用!
这就是针对懒人专用的!
其实没有人规定前端这种东西要写得多大,多了不起/ᐠ。ꞈ。ᐟ
好像你很屌、很懂前端、框架,那个是一回事,能够完成自己的需求也很美好。

很久没更新了,这次的酷酷小脚本应该很爽⁽⁽٩(๑˃̶͈̀ ᗨ ˂̶͈́)۶⁾⁾
好好的来玩前端吧,未来还有更大的宇宙!


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章