使用 FireFox 扩展将 URL 从本地文件系统重定向到互联网
Redirect URL from local filesystem to internet with FireFox extension
我的计算机上有几个包含 link 其他页面的 PDF 文件。然而,那些 links 会将您定向到本地文件系统而不是互联网。 IE。单击 link 将打开浏览器并将您带到 file:///page
而不是 http://domain/page
。
修改这些文件以包含完整的 URL 不是一种选择。
我尝试使用可用的 Firefox 扩展来重定向 URL,但 none 有效,所以我尝试创建自己的扩展来执行相同的操作。到目前为止我发现 URL 在选项卡的 "ready" 事件触发之前无法访问,但是引用没有完整路径的本地文件的页面总是 "uninitialized."
这是我的扩展脚本,几乎直接来自 https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/tabs:
var tabs = require("sdk/tabs");
tabs.on('open', function(tab){
tab.on('ready', function(tab){
if (tab.url.indexOf("file:///page") != -1) {
tab.url = tab.url.replace("file://", "https://domain");
}
});
});
知道如何将页面从本地文件重定向到另一个位置吗?
以下代码片段对我来说效果很好。
在 main.js
:
var tabs = require("sdk/tabs");
tabs.on('ready', function(tab){
var new_url = tab.url;
if (tab.url.indexOf("file:///") != -1) {
new_url = new_url.replace("file:///", "https://domain/");
tab.url = new_url;
}
});
尽管如此,当 url 符合您的要求时,我的 Firefox 并没有在我的选项卡上触发就绪事件。例如,当 url 为 file:///page/lala.pdf
时,firefox 会忽略 url 并且不会尝试访问它。
我相信 Firefox 想要一个 "real" 路径来加载页面,例如 file:///C:page/lala.pdf
.
希望对您有所帮助。
我发现最简单的方法实际上来自另一个 Whosebug 答案...Get Content of Location Bar。使用该答案中的函数检索 URL,然后基于该函数进行重定向。所以我最终得到以下结果:
var tabs = require("sdk/tabs");
tabs.on('open', function(tab){
tab.on('activate', function(tab){
var { getMostRecentWindow } = require("sdk/window/utils");
var urlBar = getMostRecentWindow().document.getElementById('urlbar');
if (urlBar.value.indexOf("file:///page/") != -1) {
tab.url = urlBar.value.replace("file://", "https://domain");
}
});
});
我的计算机上有几个包含 link 其他页面的 PDF 文件。然而,那些 links 会将您定向到本地文件系统而不是互联网。 IE。单击 link 将打开浏览器并将您带到 file:///page
而不是 http://domain/page
。
修改这些文件以包含完整的 URL 不是一种选择。
我尝试使用可用的 Firefox 扩展来重定向 URL,但 none 有效,所以我尝试创建自己的扩展来执行相同的操作。到目前为止我发现 URL 在选项卡的 "ready" 事件触发之前无法访问,但是引用没有完整路径的本地文件的页面总是 "uninitialized."
这是我的扩展脚本,几乎直接来自 https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/tabs:
var tabs = require("sdk/tabs");
tabs.on('open', function(tab){
tab.on('ready', function(tab){
if (tab.url.indexOf("file:///page") != -1) {
tab.url = tab.url.replace("file://", "https://domain");
}
});
});
知道如何将页面从本地文件重定向到另一个位置吗?
以下代码片段对我来说效果很好。
在 main.js
:
var tabs = require("sdk/tabs");
tabs.on('ready', function(tab){
var new_url = tab.url;
if (tab.url.indexOf("file:///") != -1) {
new_url = new_url.replace("file:///", "https://domain/");
tab.url = new_url;
}
});
尽管如此,当 url 符合您的要求时,我的 Firefox 并没有在我的选项卡上触发就绪事件。例如,当 url 为 file:///page/lala.pdf
时,firefox 会忽略 url 并且不会尝试访问它。
我相信 Firefox 想要一个 "real" 路径来加载页面,例如 file:///C:page/lala.pdf
.
希望对您有所帮助。
我发现最简单的方法实际上来自另一个 Whosebug 答案...Get Content of Location Bar。使用该答案中的函数检索 URL,然后基于该函数进行重定向。所以我最终得到以下结果:
var tabs = require("sdk/tabs");
tabs.on('open', function(tab){
tab.on('activate', function(tab){
var { getMostRecentWindow } = require("sdk/window/utils");
var urlBar = getMostRecentWindow().document.getElementById('urlbar');
if (urlBar.value.indexOf("file:///page/") != -1) {
tab.url = urlBar.value.replace("file://", "https://domain");
}
});
});