JS小应用:从图床获取的html代码中提取IMG标签并提取图片复制到剪贴板

news2024/11/28 16:53:50

JS小应用:从图床获取的html代码中提取IMG标签并提取图片复制到剪贴板

问题产生

自己做站长,为了节省银子,难免要用到图床。有的图床可以直接给你URL,这当然是最好的情况:

而有的图床,却禁用了鼠标右键,甚至复制一张图片地址的机会都不给(偏偏它其他的功能还挺好,你又舍不得放弃它),它给的:

这时候就比较烦了。所以,我自己写了一段js来把自己解放出来。

需求功能

它实现下面几个功能:

  1. 从HTML代码中提取到IMG的URL;
  2. 把上一步获得的IMG的URL直接封成img标签;
  3. 获得图片;
  4. 把图片批量复制到剪贴板。

这样,在网页后台编辑文件时候,我就可以点几下鼠标,最后按下ctrl+v,就完成图片批量插入到文章里了。。。

解决问题

HTMl结构

<div class="container">
    <h1>从HTML代码中提取IMG地址并逐行输出</h1>
    <textarea id="Input" rows="6" cols="50" placeholder="把你的图床链接粘帖在这里..."></textarea>    
    <button class="base" onclick="extractImgUrls()">提取图片URLs</button>
    <button class="base" onclick="cleardiv('Input')" >清空HTML</button>
    <textarea id="output" cols="200" rows="5"> 提取后的IMG URLs 会显示在这里         
    </textarea>            
    <button class="base" onclick="copyDivContentToClipboard('output');">复制URLs</button>
    <button class="base" onclick="cleardiv('output')" >清空URLs</button>
    <button class="base" onclick="insertimg()">获得图片</button>    
    <button class="base" onclick="copyDivContentToClipboard('inserted-images')">复制图片</button>
    <button class="base" onclick="cleardiv('inserted-images')" >清空图片</button>
    <div id="inserted-images"></div>
</div>

JS代码


// 提取IMG的URLs
function extractImgUrls() {
    var htmlInput = document.getElementById('Input').value;
    var imgTags = htmlInput.match(/<img\s+[^>]*src="([^"]*)"/gi);
    var imgSrcs = [];
    
    if (imgTags) {
        imgTags.forEach(function(tag) {
            var srcMatch = tag.match(/src="([^"]*)"/);
            if (srcMatch) {
                imgSrcs.push(srcMatch[1]);
            }
        });
    }

    var outputDiv = document.getElementById('output');
    outputDiv.value = ''; // 清空现有内容
    imgSrcs.forEach(function(src, index) { 
        var imgLine = src + '\n';
        outputDiv.value += imgLine;
    });
    if (imgSrcs.length === 0) {
        outputDiv.value = '没有找到IMG地址 (⊙︿⊙)';
    }
}

// 获得图片标签,形如 <img src='' />,并将图片输出到指定div中
    function insertimg() {  
    event.preventDefault();
    var urls = document.getElementById("output").value.split("\n");
    var insertedImagesDiv = document.getElementById("inserted-images");     
    urls.forEach(function(url) {
    var img = document.createElement("img");
    img.src = url;       
    insertedImagesDiv.appendChild(img);
    });
}

// 清除指定元素的值
function cleardiv(targetId){
    var target = document.getElementById(targetId);
    target.innerHTML = ""; 
    target.value = ""; 
}

// 复制xxx到粘贴板
function copyDivContentToClipboard(divId) {
    // 获取div元素
    var div = document.getElementById(divId);
    if (!div) {
        return;
    }
    // 创建一个新的临时div来持有要复制的内容
    var tempDiv = document.createElement("div");
    tempDiv.style.position = "absolute";
    tempDiv.style.left = "-10000px";
    tempDiv.appendChild(div.cloneNode(true));
    document.body.appendChild(tempDiv);

    // 选中内容
    var selection = window.getSelection();
    var range = document.createRange();
    range.selectNodeContents(tempDiv);
    selection.removeAllRanges();
    selection.addRange(range);

    // 复制到剪贴板
    var successful = false;
    try {
        successful = document.execCommand('copy');
    } catch (err) {
        alert('Oops, unable to copy');
    }

    // 移除临时div
    document.body.removeChild(tempDiv);
    if (successful) {
        alert('已复制到剪贴板');
    }
}

代码比较简陋,但够用就好,有更好的建议的同学,欢迎给我留言啊~~。本例,就在本地用,没有考虑到乱七八糟的输入测试,也不知道有没有人需要。反正,我自己是很需要的。我把代码放在下载区了,不想自己复制又有需要的朋友,可以点这里下载:从图床获取的html代码中提取IMG标签并提取图片复制到剪贴板

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1961504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“论数据分片技术及其应用”写作框架软考高级论文系统架构设计师论文

论文真题 数据分片就是按照一定的规则&#xff0c;将数据集划分成相互独立、正交的数据子集&#xff0c;然后将数据子集分布到不同的节点上。通过设计合理的数据分片规则&#xff0c;可将系统中的数据分布在不同的物理数据库中&#xff0c;达到提升应用系统数据处理速度的目的…

FP分数规划在无线通信中的应用(II)

3. 具体例子 3.1-3.3都只需要用第一章concave-convex方法求解&#xff0c;3.4-3.6需要用到第二章的拉格朗日对偶变换&#xff0c;而且具体解 x \mathbf{x} x时需要对离散变量单独开发算法。 3.1 多小区SISO能量分配 第一个例子是具有一组单天线基站&#xff08;BSs&#xff…

Python面向对象浅析

目录 面向对象基本概念 一、类和对象 类和对象是面向对象骗程的两个核心概念。 在程序开发中&#xff0c;要设计一个类&#xff0c;通常需要满足一下三个要素: self详解&#xff1a; 对象&#xff08;Object&#xff09; 魔法方法&#xff1a; 类里的一些特殊方法 __in…

RK3568笔记四十八:ADC驱动开发测试

若该文为原创文章&#xff0c;转载请注明原文出处。 一、ADC介绍 RK3568集成了一个逐次逼近模数转换器&#xff08;Successive Approximation ADC&#xff09;&#xff0c;通常简称为SAR ADC。 这种转换器能够将连续的模拟信号转换为离散的数字信号&#xff0c;其特点在于具有…

nginx转发netty长链接(nginx负载tcp长链接配置)

首先要清楚一点&#xff0c;netty是长链接是tcp连接不同于http中负载在http中配置server监听。长连接需要开启nginx的stream模块(和http是并列关系) 安装nginx时注意开启stream&#xff0c;编译时加上参数 --with-stream &#xff08;其他参数根据自己所需来加&#xff09; …

rem实现屏幕适配(jQuery)

一、rem换算 1.根据视口宽度动态计算字体大小&#xff0c;如果宽度大于750px&#xff0c;则将字体大小设置为100px&#xff0c;否则按比例缩小。 tips:使用时记得引入jQuery.js // 在文档加载完成后执行函数&#xff0c;确保DOM已经准备就绪$(function () {// 定义一个自执行…

增量学习中Task incremental、Domain incremental、Class incremental 三种学习模式的概念及代表性数据集?

1 概念 在持续学习领域&#xff0c;Task incremental、Domain incremental、Class incremental 是三种主要的学习模式&#xff0c;它们分别关注不同类型的任务序列和数据分布变化。 1.1 Task Incremental Learning (Task-incremental) 任务增量学习&#xff0c;也称为任务增…

盐分反演关键:批量计算常用的盐分指数反演变量

盐分反演关键&#xff1a;批量计算常用的盐分指数反演变量 一、引言 盐分指数反演是遥感应用中的一个重要方面&#xff0c;尤其在农业和环境监测中有着广泛的应用。通过遥感影像&#xff0c;研究人员可以高效地获取和分析地表盐分信息&#xff0c;为土地管理和作物生产提供重…

YOLOX+PyQt5交通路口智能监测平台设计与实现

1.概述 交通要道的路口上人车穿行&#xff0c;特别是上下班早高峰&#xff0c;且时常发生交通事故。因此对交通路口的车流量和人流量的监测必不可少。 2.检测模型 使用的检测模型为YOLOX模型&#xff0c;模型权重为训练VOC数据集得来&#xff0c;其中包括了二十个类别&#…

ONLYOFFICE 协作空间 2.6 已发布:表单填写房间、LDAP、优化房间和文件管理等

更新后的 ONLYOFFICE 协作空间带来了超过 20 项新功能和优化&#xff0c;让工作更加高效和舒适。阅读本文了解详情。 表单填写房间 这次更新增加了一种新的房间类型&#xff0c;可在 ONLYOFFICE 协作空间中组织简单的表单填写流程。 通过表单填写房间&#xff0c;目前可以完成…

仓库物品与装备物品位置更换

一、装备物品与选中的仓库物品位置交换 1、准备工作 2、Inventory Items 3、给Warehouse添加Grid Layout Group组件 4、复制Inventory Items&#xff0c;设置Grid Layout Group组件 5、创建文本ItemName和ItemDescription 6、设置物品数据 (1) 创建 ItemData.cs using Syst…

Spring boot tomcat 读写超时时间设置

yaml配置 connection-timeout: 20000 server:port: 9898servlet:context-path: /testtomcat:connection-timeout: 20000max-connections: 250accept-count: 300 spring源码设置自定义tomcat参数 customizeConnector(connector); Overridepublic WebServer getWebServer(Serv…

【MySQL】表的约束{ 常见约束 空属性 默认值 列描述comment zerofill 主键 复合主键 自增长 唯一键 外键 }

文章目录 常见约束空属性默认值列描述commentzerofill主键复合主键自增长唯一键外键 2.总结 真正约束字段的是数据类型&#xff0c;但是数据类型约束很单一&#xff0c;需要有一些额外的约束&#xff0c;更好的保证数据的合法性&#xff0c;从业务逻辑角度保证数据的正确性。比…

MySQL基础练习题12-使用唯一标识码替换员工ID

题目&#xff1a;展示每位用户的 唯一标识码&#xff08;unique ID &#xff09;&#xff1b;如果某位员工没有唯一标识码&#xff0c;使用 null 填充即可。 准备数据 分析数据 题目&#xff1a;展示每位用户的 唯一标识码&#xff08;unique ID &#xff09;&#xff1b;如果…

一, 创建工程,引入依赖

一&#xff0c; 创建工程&#xff0c;引入依赖 文章目录 一&#xff0c; 创建工程&#xff0c;引入依赖创建工程工程间的关系的建立配置各个工程当中的 pow 配置信息&#xff0c;相关的依赖父工程(也就是总项目工程)的 pow 配置demo-module06-generate 模块中pow 配置&#xff…

基于IEC61499标准的在线工业编程平台open61499

基于IEC61499标准的在线工业编程平台open61499是一个专为工业自动化领域设计的编程环境&#xff0c;它遵循IEC 61499标准&#xff0c;为开发者提供了一种高效、灵活的方式来创建、配置和管理分布式控制系统&#xff08;DCS&#xff09;的应用程序。以下是对open61499的详细解析…

LeetCode热题 翻转二叉树、二叉树最大深度、二叉树中序遍历

目录 一、翻转二叉树 1.1 题目链接 1.2 题目描述 1.3 解题思路 二、二叉树最大深度 2.1 题目链接 2.2 题目描述 2.3 解题思路 三、二叉树中序遍历 3.1 题目链接 3.2 题目描述 3.3 解题思路 一、翻转二叉树 1.1 题目链接 翻转二叉树 1.2 题目描述 1.3 解题思路 根…

【多模态大模型】 BLIP in ICML 2022

一、引言 论文&#xff1a; BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation 作者&#xff1a; Salesforce Research 代码&#xff1a; BLIP 特点&#xff1a; 该方法分别使用ViT和BERT进行图像和文本特征提取&am…

【changchain-community安装失败】‘EntryPoints‘ object has no attribute ‘get‘报错解决

在安装changchain-community时报错信息如下&#xff1a; WARNING: Keyring is skipped due to an exception: EntryPoints object has no attribute get ERROR: Could not find a version that satisfies the requirement changchain-community ERROR: No matching distributio…

进程间通信与线程间通信的方法汇总

目录 一、进程间通信机制 管道(pipe)&#xff1a; 命名管道(FIFO)&#xff1a; 消息队列(MQ)&#xff1a; 信号量(semaphore)&#xff1a; 共享内存(shared memory)&#xff1a; 信号(signal)&#xff1a; 内存映射(mapped memory)&#xff1a; 内存映射和共享内存的区…