我想知道如何使用Firefox插件在頁面加載時修改頁面的URL。我被引導到建議,如the following。具體來說,當用戶通過地址欄轉到「https://www.google.com」時,我想重定向到「https://www.google.co.uk」。重訪 - 修改URL在Firefox中加載頂級頁面之前
對於我的具體目的,上述解決方案几乎可行,但它重定向了太多的URL。我發現的一個問題如下:雖然每次都可以重定向,但有時我不想重定向。例如,在Windows中,我似乎不僅在當前標籤的URL爲常規Google時重定向,而且當頁面所做的某個查詢包含上述鏈接時(例如新聞文章),我也會重定向。
是否有任何方式通過檢查當前標籤的URL來使用Mozilla的觀察者框架重定向?如果沒有,是否有一些替代解決方案仍然使用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();
}
而不是aSubject.cancel,你應該做的aSubject.redirectTo ,因爲你的loadUL函數只在當前選中的選項卡上工作。 – Noitidart 2014-11-06 21:45:04