使用浏览器WebExtension将URL从本地文件系统重定向到Internet

时间:2017-04-23 22:41:21

标签: redirect google-chrome-extension local firefox-webextensions

总结一下这个问题,我的计算机上有几个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更改)。但无论使用哪个收听者(例如onCreatedonActivated等),我都会获得该网址about:blank

我尝试过注入代码来更改地址栏的值,但这似乎也不起作用:

browser.tabs.executeScript( {
    code: "window.location.href = window.location.href.replace('file:///', 'http://domain/')"
});

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

DeleteLocalRef

为我工作