重新访问-在Firefox中加载顶级页面之前修改URL
Revisited - Modify URL Before TOP LEVEL Page Loading in Firefox
我想知道如何在加载页面时使用Firefox插件修改页面的URL。我收到了以下建议。具体而言,当用户转到"https://www.google.com"通过地址栏,我想重定向到"https://www.google.co.uk".
出于我的特定目的,上面的解决方案几乎可以工作,但它重定向了太多的URL。我发现的一个问题如下:虽然我每次都可以重定向,但有时我会在不想重定向的时候重定向。例如,在Windows中,我不仅在当前选项卡的URL是常规谷歌时重定向,而且在页面的某些查询包含上述链接时(例如新闻文章)也会重定向。
有没有任何方法可以使用Mozilla的观察者框架通过只检查当前选项卡的URL来重定向?如果没有,是否有其他解决方案仍然使用Mozilla的插件SDK?
编辑:下面是我的错误源代码。
var myObserver = {
register: function() {
var observerService = Components.classes["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService);
observerService.addObserver(this, TOPIC_MODIFY_REQUEST, false);
},
//observe function to capture the changed event
observe : function(aSubject, aTopic, aData) {
if (TOPIC_MODIFY_REQUEST == aTopic ) {
var url;
aSubject.QueryInterface(Components.interfaces.nsIHttpChannel);
url = aSubject.URI.spec;
url = encodeURIComponent(url);
if (url.indexOf("google.nl") !=-1 || url.indexOf("hl%3Dnl") !=-1
|| url.indexOf("google.com%2Fnl") !=-1 || url == "https%3A%2F%2Fwww.google.com"
|| url == "https%3A%2F%2Fwww.google.com%2Fncr" || url ==
"https%3A%2F%2Fwww.google.com%2F%3Fgws_rd%3Dssl")
{
aSubject.cancel(Components.results.NS_BINDING_ABORTED);
loadURL("https://www.google.co.uk/");
}
}
}
function loadURL(url) {
// Set the browser window's location to the incoming URL
window._content.document.location = url;
// Make sure that we get the focus
window.content.focus();
}
检查LOAD_INITIAL_DOCUMENT_URI
标志,如果是,则中止/重新提取。否则不要。如果这个标志存在,它就是顶级页面。
编辑:根据您的代码,如果aSubject有这样的标志,您需要测试它是QueryInterface
d:
var oHttp = aSubject.QueryInterface(Components.interfaces.nsIHttpChannel);
if (oHttp.loadFlags & Components.interfaces.nsIHttpChannel.LOAD_INITIAL_DOCUMENT_URI) {
//is top level load
}
相关文章:
- 修改当前URL的Javascript
- 可以在页面加载后使用javascript/Jquery重写/修改URL
- 修改 HTML 的方式使左键应带到下一个 URL
- 在浏览器操作中修改当前选项卡的URL的TLD
- 如何修改Stumbleupon URL's,并提供到内容页面的直接链接
- 修改以下正则表达式,使其在URL末尾包含斜杠
- 获取远程url's上次使用javascript修改的日期
- 使用jQuery修改url参数而不刷新页面
- 修改req.url;t更新url参数(req.query)
- JavaScript 修改 URL 参数数组
- 如何通过 JavaScript 或 jQuery 修改 URL
- 使用 javascript 更改 url 和修改历史记录
- Javascript 来修改 URL 并分配 URL,而无需使用源作为父级
- 修改 URL 时 Javascript 文件夹消失
- 如何根据指令控制器中的值修改指令的模板 URL
- Excel 工作表使用 URL 进行修改
- 在onclick处理程序中修改目标url
- 获取当前URL并修改子目录,然后使用Javascript转到URL
- 加载json-url参数代码(javascript修改)
- 基于URL修改显示