总结一下这个问题,我的计算机上有几个PDF文件,其中包含指向其他页面的链接。但是,这些链接会将您引导至本地文件系统而非互联网(即点击该链接会打开浏览器并转到file:///page
而不是http://domain/page
)。
修改这些文件以包含完整的URL不是一个选项。我的问题几乎与我一年半前提到的question相同。不同之处在于我需要将现有扩展(使用Firefox SDK制作)移植到适用于Firefox的新WebExtensions API(与Chrome扩展程序相同)。
redirection有一些方法,例如
browser.webRequest.onBeforeRequest.addListener(
redirect,
{urls:[pattern]},
["blocking"]
);
但只接受http://
和https://
网址格式。
我目前正在尝试使用以下代码:
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
。
我尝试过注入代码来更改地址栏的值,但这似乎也不起作用:
browser.tabs.executeScript( {
code: "window.location.href = window.location.href.replace('file:///', 'http://domain/')"
});
感谢您的帮助!
答案 0 :(得分:0)
DeleteLocalRef
为我工作