我希望编写一个简单的Web扩展,用于处理特定类型的链接。我不想要一个系统范围的协议处理程序,它应该只在我的浏览器中打开的网站上工作。
例如,当任何东西引起一个磁力链接被打开时,我希望拦截它,以便Web扩展处理它。
如果可能的话,在启用Web扩展时,我希望防止系统应用程序处理它。
但这只适用于被点击的链接。通过JavaScript打开的链接不会受到影响,所以这也行不通。
例如,当任何东西引起一个磁力链接被打开时,我希望拦截它,以便Web扩展处理它。
如果可能的话,在启用Web扩展时,我希望防止系统应用程序处理它。
起初我认为可以使用registerProtocolHandler:
navigator.registerProtocolHandler("magnet", "*%s", "Magnet handler");
但我认为这样做并不能达到我想要的效果...
我的下一个想法是在所有a元素上使用点击事件:
document.getElementsByTagName('a').addEventListener('click', event => {
let link = event.target.href
if (link.startsWith('magnet://')) {
// handle magnet link
return false
}
}
但这只适用于被点击的链接。通过JavaScript打开的链接不会受到影响,所以这也行不通。