alexhua / Aria2-Explorer

An aria2 download task management extension for chromium based browser
https://www.aria2e.com/
BSD 3-Clause "New" or "Revised" License
788 stars 66 forks source link

拦截磁力链接 可否强制在新窗口打开? #60

Closed vvyoko closed 2 years ago

vvyoko commented 3 years ago

大部分磁力链接自身并没有添加target="_blank" 的属性 导致拦截磁力时会在当前窗口打开 然后整个页面会强制重载一次,视觉上就是页面瞬间一白,然后恢复。 无论是性能还是视觉上都非常的不友好。 于是希望本扩展可强制在新窗口打开磁链。

不知道怎么在Github发磁力链接,HTML代码是这样的,大部分都是第一种,会造成上面的影响。

<a href="magnet:?xt=urn:btih:F00037EA32F08AAB825F7D8C305D6F857C6A7392">当前窗口</a>

<a href="magnet:?xt=urn:btih:F00037EA32F08AAB825F7D8C305D6F857C6A7392" target="_blank">新窗口</a>
alexhua commented 3 years ago

你们的眼睛真是雪亮,一点瑕疵都会被发现,是会有你说的小问题。拦截磁力链接用的是ProtocolHandler,打开Handler页面这个行为是Chrome的行为控制不了。为了这个注入userscript修改链接属性又不值当。关于性能,只是一个页面历史回退应该比重载快很多,我觉得问题不大。目前只能这样处理了,有更好的办法再说。

vvyoko commented 3 years ago

这几天我去一小众浏览器那寻找解决方案 我本以为可以很简单的解决 然后还是回到了大大说的注入 userscript 修改链接属性

作为一个非程序员搜了一下,照葫芦画瓢修改了一下完全运行不了。 希望大大看下具体是修改哪里? 我想达到的目的就是大大说的为默认的 magnet a href 加个target="_blank"

UserScript代码就简单的这样,完全运行不了。

var TargetLink = $("a:contains('magnet')");

if (TargetLink.length)
    TargetLink.attr ('target', '_blank');

原代码: https://stackoverflow.com/questions/51682166/way-to-open-clicked-link-in-new-tab-via-tampermonkey

alexhua commented 3 years ago
var TargetLink = $("a:contains('magnet')");

if (TargetLink.length)
    TargetLink.attr ('target', '_blank');

代码应该没有问题,我猜 @require https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js 这个包可能require不到。 油猴脚本用的不多,具体的要靠你了

alexhua commented 2 years ago

already done at 3c7397596861f9b105221064f44f0ece4977d5be