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

sxkk20081年前知识分享102

文章拷贝助手,文章一键拷贝到微信公众平台、知乎 下载 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绘画技术便成为了探索艺术创作的一条新途径。本文将介绍AI绘画的入门技...

Iconfont 还是不能上传,如何维护你的 Icon?

使用 iconfont 有很多优势,比如只需要加载一次,全部图标都可以设置字号大小,颜色、透明度等,可以随意变换字体的形态,并且图标是矢量的,不会随着字体大小的变化失真,得益于 iconfont.cn...

AI绘画技术初探

AI绘画技术初探

  随着AI技术的快速发展,越来越多的领域开始利用这项技术进行创新和改进。其中,AI绘画技术已经逐渐成为热门话题。那么,AI绘画是如何运作的呢?本文将以此为中心,介绍AI绘画...

发表评论    

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