diff --git a/src/plugins/magnet-hub.js b/src/plugins/magnet-hub.js index cec3b41..c745c69 100644 --- a/src/plugins/magnet-hub.js +++ b/src/plugins/magnet-hub.js @@ -2,6 +2,30 @@ import { BasePlugin } from '../core/base-plugin.js'; import { __publicField } from '../core/constants.js'; import { GM_xmlhttpRequest } from 'vite-plugin-monkey/dist/client'; +function showCopiedFeedback($btn) { + const originalText = $btn.text(); + $btn.addClass("copied").text("已复制"); + setTimeout((() => { + $btn.removeClass("copied").text(originalText); + }), 2e3); +} + +function fallbackCopy(text, $btn) { + const textarea = document.createElement("textarea"); + textarea.value = text; + textarea.style.position = "fixed"; + document.body.appendChild(textarea); + textarea.select(); + try { + document.execCommand("copy"); + showCopiedFeedback($btn); + } catch (err) { + console.error("复制失败:", err); + alert("复制失败,请手动复制链接"); + } + document.body.removeChild(textarea); +} + class MagnetHubPlugin extends BasePlugin { constructor() { super(...arguments); @@ -63,6 +87,27 @@ class MagnetHubPlugin extends BasePlugin { $(e.target).addClass("active"); this.searchEngine($resultsContainer, this.currentEngine, keyword); })); + $container.on("click", ".copy-btn", function () { + const $btn = $(this), magnet = $btn.data("magnet"); + navigator.clipboard ? navigator.clipboard.writeText(magnet).then((() => { + showCopiedFeedback($btn); + })).catch((() => { + fallbackCopy(magnet, $btn); + })) : fallbackCopy(magnet, $btn); + }); + $container.on("click", ".down-115", (async event => { + event.stopPropagation(); + const magnet = $(event.currentTarget).data("magnet"); + let loadObj = loading(); + try { + await this.getBean("WangPan115TaskPlugin").handleAddTask(magnet); + } catch (e) { + show.error("发生错误:" + e); + console.error(e); + } finally { + loadObj.close(); + } + })); this.searchEngine($resultsContainer, this.currentEngine || this.searchEngines[defaultEngineIndex], keyword); return $container; } @@ -96,49 +141,7 @@ class MagnetHubPlugin extends BasePlugin { const $result = $(`\n
\n `); $container.append($result); })); - $container.on("click", ".copy-btn", (function() { - const $btn = $(this), magnet = $btn.data("magnet"); - navigator.clipboard ? navigator.clipboard.writeText(magnet).then((() => { - showCopiedFeedback($btn); - })).catch((err => { - fallbackCopy(magnet, $btn); - })) : fallbackCopy(magnet, $btn); - })); - $container.on("click", ".down-115", (async event => { - const magnet = $(event.currentTarget).data("magnet"); - let loadObj = loading(); - try { - await this.getBean("WangPan115TaskPlugin").handleAddTask(magnet); - } catch (e) { - show.error("发生错误:" + e); - console.error(e); - } finally { - loadObj.close(); - } - })); } else $container.append('