提取HTML内容

利用此插件只需要按住alt/option键即可提取html元素 2022/8/19 15:35:23

目前为 2022-08-19 提交的版本。查看 最新版本

// ==UserScript==
// @name        提取HTML内容
// @namespace   LiuZhengdong's Script
// @match       https://*/*
// @grant       none
// @version     1.0
// @author      Liu
// @license     MIT
// @run-at      document-body
// @description 利用此插件只需要按住alt/option键即可提取html元素 2022/8/19 15:35:23
// 
// ==/UserScript==

(() => {

  /**
   * 设置选取框的背景颜色
   */
  let backgroundColor = "rgba(255,0,0,0.5)"
  /**
   * 设置选取框的边框颜色
   */
  let borderColor = "rgba(255,0,0,0.9)"
  /**
   * 设置复制文本的前缀
   */
  let preffix = `Come from [${document.title}](${window.location.href});\n`

  /**
   * 此方法用于自定义html的净化方法
   */
  function purifyHTML(purehtml) {
    let purifiedhtml = purehtml
    return purifiedhtml;
  }

  /**
   * 此方法自定义最终的HTML如何处理
   */
  function handleHTML(finalhtml) {
    navigator.clipboard.writeText(finalhtml).then(() => {
      l("截取HTML成功")
    })
  }

  let selectBox = CreateSelectBox();
  window.onmousemove = (ev) => {
    /**
     * 如果没有按住alt/option键的话
     */
    if (!ev.altKey) {
      HideSelectBox(selectBox);
      return;
    }
    selectBox.style.display = ""


    let element = document.elementsFromPoint(ev.clientX, ev.clientY)[2];
    let eleRect = element.getBoundingClientRect();
    let clientX = eleRect.left;
    let clientY = eleRect.top;
    let margin = 5;

    /**
     * Box的点击事件
     */
    selectBox.onclick = () => {
      let purehtml = element.outerHTML;
      let purifiedhtml = purifyHTML(purehtml)
      let finalhtml = preffix + purifiedhtml;
      handleHTML(finalhtml)
    }
    //console.log(clientX,clientY,window.scrollY)

    //console.log(eleRect.left - margin)


    selectBox.style.position = "absolute";
    selectBox.style.left = window.scrollX + clientX - margin + 'px';

    //console.log(eleRect)
    //console.log(selectBox)
    selectBox.style.top = window.scrollY + clientY - margin + 'px';
    selectBox.style.width = eleRect.width + 2 * margin + 'px';
    selectBox.style.height = eleRect.height + 2 * margin + 'px';
    selectBox.style.zIndex = "99"

    //console.log(selectBox)

  }




  function l(elements) {
    console.log(elements)
    return elements
  }

  /**
   * 初始化一个盒子
   */
  function CreateSelectBox() {
    let selectBox = document.createElement("div");
    selectBox.style.backgroundColor = backgroundColor
    selectBox.style.borderStyle = "dashed";
    selectBox.style.borderWidth = "5px";
    selectBox.style.borderRadius = "5px";
    selectBox.style.borderColor = borderColor;
    selectBox.style.opacity = "0.5";
    selectBox.style.transitionProperty = "all"
    selectBox.style.transitionDuration = "0.5s"
    document.body.appendChild(selectBox);
    return selectBox;
  }


  function HideSelectBox(selectBox) {
    selectBox.style.display = "none";
  }





})()

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址