优化下载代码

This commit is contained in:
fzk
2024-09-06 15:44:37 +08:00
parent 8e9362ad8e
commit 63a91bbc79
4 changed files with 29 additions and 14 deletions
+15 -8
View File
@@ -4,7 +4,7 @@ import { useEffect, useState } from "react"
import { useMessage } from "@plasmohq/messaging/hook"
import { useStorage } from "@plasmohq/storage/hook"
import { addCss, saveHtml, setIcon } from "~tools"
import { addCss, saveTxt, setIcon } from "~tools"
const documentClone = document.cloneNode(true)
const article = new Readability(documentClone as Document, {}).parse()
@@ -44,12 +44,16 @@ export default function Custom() {
function getCodes() {
let codes = []
let codesTxt = []
const _codes = document.querySelectorAll("code")
const _codes = document.querySelectorAll("pre")
_codes.forEach((code) => {
const pre = code.closest("pre")
if (pre) {
let codeTxt = code.innerText
if (code.querySelector("code")) {
codeTxt = code.querySelector("code").innerText
}
codeTxt = codeTxt.replace(/\n/g, "")
if (codeTxt.length > 8) {
codes.push(code)
codesTxt.push(code.innerText.replace(/\n/g, ""))
codesTxt.push(codeTxt)
}
})
setCodes(codes)
@@ -58,12 +62,15 @@ export default function Custom() {
function scrollIntoViewCode(data) {
const code = codes[data.index]
code.scrollIntoView()
code && code.scrollIntoView()
}
function downloadCode(data) {
const code = codes[data.index]
saveHtml(code, article.title)
let code = codes[data.index]
if (code && code.querySelector("code")) {
code = code.querySelector("code")
}
code && saveTxt(code.innerText, article.title)
}
return <div style={{ display: "none" }}></div>
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "code-box",
"displayName": "__MSG_extensionName__",
"version": "0.6.0",
"version": "0.6.1",
"description": "__MSG_extensionDescription__",
"author": "027xiguapi. <458813868@qq.com>",
"scripts": {
+5 -5
View File
@@ -26,27 +26,27 @@ https://github.com/027xiguapi/code-box
1. 一键下载对话框html或markdown文件
2. 关闭AI对话框
### 简书
1. 一键下载对话框html或markdown文件
1. 一键下载文章html或markdown文件
2. 一键复制代码
3. 不再提示展开阅读全文,且完整展示文章
4. 不会再出现强制登录弹窗
### 脚本之家
1. 一键下载对话框html或markdown文件
1. 一键下载文章html或markdown文件
2. 打开任意一个脚本之家博客即可开始复制代码
3. 未登录脚本之家状态下,支持选中代码
4. 屏蔽广告
5. 移动端未登录脚本之家状态下,代码右上角按钮一键复制
### 博客园
1. 一键下载对话框html或markdown文件
1. 一键下载文章html或markdown文件
2. 一键复制代码
### 51CTO博客
1. 一键下载对话框html或markdown文件
1. 一键下载文章html或markdown文件
2. 未登录51CTO博客状态下,支持选中代码
3. 未登录51CTO博客状态下,代码右上角按钮一键复制
4. 未登录51CTO博客状态下,不会再出现强制登录弹窗
5. 移动端未登录51CTO博客状态下,代码右上角按钮一键复制
### php中文网
1. 一键下载对话框html或markdown文件
1. 一键下载文章html或markdown文件
2. 未登录php中文网状态下,支持选中代码
3. 未登录php中文网状态下,代码右上角按钮一键复制
4. 未登录php中文网状态下,不会再出现强制登录弹窗
+8
View File
@@ -26,6 +26,14 @@ export function setIcon(active: boolean) {
})
}
export function saveTxt(txt: string, filename?: string) {
if (txt) {
const blob = new Blob([txt], { type: "text/plain;charset=utf-8" })
filename = filename || "CodeBox-page"
saveAs(blob, `${filename}.txt`)
}
}
export function saveHtml(dom: Element, filename?: string) {
if (dom) {
const htmlContent = dom.outerHTML