Проблемы с использованием nsIURIContentListener в расширении Firefox - PullRequest
1 голос
/ 28 февраля 2009

Я разрабатываю небольшое расширение, которое должно перенаправлять определенные URL-адреса на другой сайт. Работает нормально, за исключением одной ситуации: если открыть ссылку с помощью «Контекстное меню -> Открыть в новой вкладке», текущая страница перенаправляется на мою страницу, и открывается вторая вкладка со ссылкой, которую следует перенаправить. Что я делаю не так? Есть ли лучший способ добиться того, чего я хочу?

var myListener =
{
    QueryInterface: function(iid)
     {
         if (iid.equals(Components.interfaces.nsIURIContentListener) ||
          iid.equals(Components.interfaces.nsISupportsWeakReference) ||
             iid.equals(Components.interfaces.nsISupports))
             return this;
         throw Components.results.NS_NOINTERFACE;
     },
     onStartURIOpen: function(aUri)
     {
            if (check_url(aUri)) {
                getBrowser().mCurrentTab.linkedBrowser.loadURI(######REDIRECT IS HERE#############);
                return true;
            }
            return false;
     },
     doContent: function(aContentType, aIsContentPreferred, aRequest, aContentHandler )
     {
           throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
     },
     canHandleContent: function(aContentType, aIsContentPreferred, aDesiredContentType)
    {
           throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
     },
     isPreferred: function(aContentType, aDesiredContentType)
    {
         try
        {
             var webNavInfo =
             Components.classes["@mozilla.org/webnavigation-info;1"]
                         .getService(Components.interfaces.nsIWebNavigationInfo);
             return webNavInfo.isTypeSupported(aContentType, null);
         }
       catch (e)
       {
             return false;
         }
     },
       GetWeakReference : function()
    {
        throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
     }
}

Полное расширение можно найти здесь: http://github.com/bitboxer/firefox-detinyfy

1 Ответ

0 голосов
/ 28 февраля 2009

Хорошо, я провел небольшое исследование. Крюк был неправильным подходом. Я изменил код сейчас. Посмотрите в Git, чтобы узнать больше ...

...