[油猴脚本]文章拷贝助手,文章一键拷贝到微信公众平台

sxkk20082年前知识分享220

文章拷贝助手,文章一键拷贝到微信公众平台、知乎 下载 markdown

image.png

为什么要写这个脚本

最近开了个前端公众号,需要推送一些优质的文章,但由于时间的关系,原创内容太少,常规的做法是转载一些优秀的文章到自己的公众号。

流程

image.png

使用脚本流程

image.png

HTML 转 markdown

https://www.bejson.com/convert/html2markdown/

https://devtool.tech/html-md

https://github.com/mixmark-io/turndown

使用

实现代码

大部分代码来自 markdown-nice

javascript 实现下载 markdown 文件, 掘金是使用 NUXT.js 来实现的 ssr, 所以 会将全部的数据保存在全局对象中 NUXT

__NUXT__.state.view.column.entry.article_info.mark_content 这样就可以直接取到 markdown 文件内容了,

但是有用户写文章的时候不是用 markdown 写的, 是用富文本编辑器来写的,这个时候就没有 mark_content 数据了,这个时候就要涉及到 HTML 转 markdown

我们可以使用 turndown 这个库来实现。

下载文件 js

export const downLoad = (filename, code) => {
  // 下载的文件名
  var file = new File([code], filename, {
    type: 'text/markdown',
  })
  // 创建隐藏的可下载链接
  var eleLink = document.createElement('a')
  eleLink.download = filename
  eleLink.style.display = 'none'
  // 下载内容转变成blob地址
  eleLink.href = URL.createObjectURL(file)
  // 触发点击
  document.body.appendChild(eleLink)
  eleLink.click()
  // 然后移除
  document.body.removeChild(eleLink)
}

复制实现

使用剪切板 api event.clipboardData.setData() 这个是现代浏览器都支持的 api

简单示例

document.addEventListener('copy', function (e) {
  e.clipboardData.setData('text/plain', 'foo')
  e.preventDefault() // 阻止浏览器默认事件
})

通过以上代码就可以用 JavaScript 来修改剪切板的内容了,需要注意的是阻止浏览器默认事件

document.getElementById('copyBtn').onclick = function () {
  document.execCommand('copy')
}

然后需要触发复制

最终代码

export const copySafari = (text) => {
  // 获取 input
  let input = document.getElementById('copy-input')
  if (!input) {
    // input 不能用 CSS 隐藏,必须在页面内存在。
    input = document.createElement('input')
    input.id = 'copy-input'
    input.style.position = 'absolute'
    input.style.left = '-1000px'
    input.style.zIndex = '-1000'
    document.body.appendChild(input)
  }
  // 让 input 选中一个字符,无所谓那个字符
  input.value = 'NOTHING'
  input.setSelectionRange(0, 1)
  input.focus()

  // 复制触发
  document.addEventListener('copy', function copyCall(e) {
    e.preventDefault()
    e.clipboardData.setData('text/html', text)
    e.clipboardData.setData('text/plain', text)
    document.removeEventListener('copy', copyCall)
  })
  document.execCommand('copy')
}

TODO

未来需要兼容更多平台

  • 简书
  • 思否
  • CSDN

Github

tampermonkey-copy-helper

以上就是本文全部内容,希望这篇文章对大家有所帮助,也可以参考我往期的文章或者在评论区交流你的想法和心得,欢迎一起探索前端。

相关文章

AI技术在全球经济和社会中的应用现状

AI技术在全球经济和社会中的应用现状

  随着人工智能技术的快速发展,针对人工智能技术的商业应用变得越来越丰富和普遍。当前,AI技术被广泛应用于医疗、金融、教育、娱乐等领域中。本文将深入探讨AI技术在不同领域中的...

小忆机器人:让智能陪伴生活的新选择

小忆机器人:让智能陪伴生活的新选择

  在如今快节奏的生活中,人们对于智能机器人的需求越来越多。小忆机器人作为一款新型智能陪伴机器人,以其独特的功能和灵动的外观,成为了人们追寻智能生活方式的新选择。  小忆机器...

AI换脸技术-美妆、娱乐、安全“三位一体”

AI换脸技术-美妆、娱乐、安全“三位一体”

  首先,AI换脸技术在美妆领域有着广泛的应用。AI换脸通过算法对人脸进行处理,使人们可以在不进行实际妆容涂抹的情况下,直接看到自己化妆后的效果。无论是移动端的美妆app,还...

私有链:重新定义区块链的未来

私有链:重新定义区块链的未来

  区块链是一种去中心化的技术,被广泛应用于数字货币领域。然而,公有链的限制与问题也逐渐浮出水面。为了解决公有链的困境,私有链逐渐崭露头角,并以其独特的特点和潜力吸引了越来越...

小米T300:革新技术的智能扫地机器人

小米T300:革新技术的智能扫地机器人

  随着科技的发展,智能家居产品正逐渐成为人们生活中的重要组成部分。其中,扫地机器人作为一种高效便利的清洁工具,深受人们的喜爱。而小米T300作为小米生态链旗下的智能扫地机器...

使用 Web Speech API 和 ChatGPT API 开发一个智能语音机器人

前言随着 AI 的不断发展,我们前端工程师也可以开发出一个智能语音机器人,下面是我开发的一个简单示例,大家可以访问这个视频地址查看效果。原理首先说一下这个 demo 的实现原理和步骤我们使用 Web...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。