2009-02-27 5 views
1

Ich entwickle eine kleine Erweiterung, die bestimmte URLs auf eine andere Site umleiten muss. Es funktioniert gut, bis auf eine Situation: Wenn Sie den Link mit "Kontext-Menü -> In neuem Tab öffnen" öffnen, wird die aktuelle Seite auf meine Seite umgeleitet und ein zweiter Tab öffnet sich mit dem Link, der umgeleitet werden soll. Was mache ich falsch? Gibt es einen besseren Weg, um das zu erreichen, was ich will? http://github.com/bitboxer/firefox-detinyfyProbleme mit der Verwendung von nsIURIContentListener in Firefox-Erweiterung

Antwort

-1

Okay, ich habe einige Nachforschungen:

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; 
    } 
} 

Der komplette Erweiterung kann hier gefunden werden. Der Haken war ein falscher Ansatz. Ich habe den Code jetzt geändert. Schauen Sie in den Git, um mehr herauszufinden ...

+0

Der GitHub-Link oben ist gebrochen, und in jedem Fall, wenn Sie eine kurze Zusammenfassung der Reparatur, die Sie gemacht haben, könnte es sehr hilfreich sein, so dass wir nicht ' Du musst deinen Code durchforsten, um ihn zu finden. – MatrixFrog

+0

Ich habe den Link repariert. Und wenn Sie mehr wissen wollen, schauen Sie in: http://github.com/bitboxer/firefox-detinyfy/blob/master/content/overlay.js - vor allem die Override * -Methoden – bitboxer

+0

Ich kann den GitHub Repo nicht finden - Ich hätte gerne mehr Informationen dazu! – Daniel

Verwandte Themen