总结一下这个问题,我的计算机上有几个 PDF 文件,其中包含其他页面的链接。然而,这些链接会将您引导至本地文件系统而不是互联网(即单击链接将打开浏览器并带您前往
file:///page
而不是 http://domain/page
)。
无法修改这些文件以包含完整的 URL。我的问题几乎与我一年半前问的问题相同。不同之处在于,我需要将现有扩展(使用 Firefox SDK 制作)移植到新的 Firefox WebExtensions API(与 Chrome 扩展相同)。
有一些方法可以用于重定向,例如
browser.webRequest.onBeforeRequest.addListener(
redirect,
{urls:[pattern]},
["blocking"]
);
但只接受
http://
和 https://
URL 模式。
我目前正在尝试使用以下代码:
var id;
browser.tabs.onCreated.addListener( details => id = details.id )
browser.tabs.onUpdated.addListener( (tabId, changeInfo, tab) => {
var url = changeInfo.url;
if (tabId == id && url.includes("file:///")) {
url = url.replace("file:///page", http://domain/page");
browser.tabs.update(
id,
{ url: url }
);
}
});
不幸的是,我遇到了与原来的问题相同的基本问题,导致
onUpdated
侦听器未触发(或者如果它确实触发,也不是因为 URL 更改)。但无论使用什么侦听器(例如 onCreated
、onActivated
等),我都会得到 about:blank
作为 URL。
我尝试过注入代码来更改地址栏的值,但这似乎也不起作用:
browser.tabs.executeScript( {
code: "window.location.href = window.location.href.replace('file:///', 'http://domain/')"
});
感谢您的帮助!
redirectUrl : chrome.extension.getURL("hello.html")
为我工作
我也有类似的问题。我想打开whatsapp的api。网址为网页。使用扩展程序或 javascript 自动检测、转换和打开 url。
有人可以帮忙吗?