Skip to content

Commit 26fd3fc

Browse files
committed
feat: ✨ 链接支持快速跳转
1 parent ad1c4b4 commit 26fd3fc

6 files changed

Lines changed: 48 additions & 89 deletions

File tree

apps/common/qr-code/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# common-qr-code
22

3+
## 1.4.0
4+
5+
### Minor Changes
6+
7+
- 链接支持快速跳转
8+
39
## 1.3.0
410

511
### Minor Changes

apps/common/qr-code/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "common-qr-code",
33
"type": "module",
4-
"version": "1.3.0",
4+
"version": "1.4.0",
55
"private": true,
66
"description": "图片二维码识别(Common QR Code)-- 右键图片,识别二维码并复制到剪贴板。",
77
"author": {

apps/common/qr-code/src/index.ts

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { GM_registerMenuCommand, GM_setClipboard } from '$'
33
import { Notify } from 'notiflix/build/notiflix-notify-aio'
44
import Swal from 'sweetalert'
55
import { ID, VERSION } from 'virtual:meta'
6-
import { decodeQrCode } from './utils'
6+
import { decodeQrCode, isUrl } from './utils'
77

88
console.log(`${ID}(v${VERSION})`)
99

@@ -33,7 +33,27 @@ GM_registerMenuCommand('Decode QR Code', () => {
3333
resultButton.style.marginTop = '10px'
3434
}
3535
resultButton.dataset.result = result
36-
element.appendChild(resultButton)
36+
if (isUrl(result)) {
37+
const div = document.createElement('div')
38+
div.style.display = 'flex'
39+
const a = document.createElement('a')
40+
a.href = result
41+
a.target = '_blank'
42+
a.textContent = '跳转'
43+
a.style.marginLeft = '10px'
44+
a.style.fontSize = '14px'
45+
a.style.flexShrink = '0'
46+
a.style.display = 'inline-flex'
47+
a.style.alignItems = 'center'
48+
a.style.justifyContent = 'center'
49+
a.className = 'swal-button swal-button--cancel'
50+
div.appendChild(resultButton)
51+
div.appendChild(a)
52+
element.appendChild(div)
53+
}
54+
else {
55+
element.appendChild(resultButton)
56+
}
3757
}
3858

3959
element.addEventListener('click', (event) => {

apps/common/qr-code/src/utils.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,7 @@ export async function decodeQrCode(element: ImageElement): Promise<string[]> {
6464
}
6565
})
6666
}
67+
68+
export function isUrl(url: string): boolean {
69+
return /^https?:\/\//.test(url.trimStart())
70+
}

dist/common-qr-code.user.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1085,6 +1085,9 @@
10851085
}
10861086
});
10871087
}
1088+
function isUrl(url) {
1089+
return /^https?:\/\//.test(url.trimStart());
1090+
}
10881091
console.log(`${ID}(v${VERSION})`);
10891092
let image = null;
10901093
_GM_registerMenuCommand("Decode QR Code", () => {
@@ -1109,7 +1112,18 @@
11091112
resultButton.style.marginTop = "10px";
11101113
}
11111114
resultButton.dataset.result = result;
1112-
element.appendChild(resultButton);
1115+
if (isUrl(result)) {
1116+
const div = document.createElement("div");
1117+
const a = document.createElement("a");
1118+
a.href = result;
1119+
a.target = "_blank";
1120+
a.textContent = "跳转";
1121+
div.appendChild(resultButton);
1122+
div.appendChild(a);
1123+
resultButton.appendChild(div);
1124+
} else {
1125+
element.appendChild(resultButton);
1126+
}
11131127
}
11141128
element.addEventListener("click", (event) => {
11151129
if (event.target instanceof HTMLButtonElement && event.target.dataset.result) {

pnpm-lock.yaml

Lines changed: 0 additions & 85 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)