mirror of
https://github.com/027xiguapi/code-box.git
synced 2026-09-25 16:48:31 +00:00
优化下载代码
This commit is contained in:
+15
-8
@@ -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
@@ -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
@@ -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中文网状态下,不会再出现强制登录弹窗
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user