2008-11-23 4 views
14

Je crée une extension Firefox ... quel serait le javascript pour ouvrir une URL dans l'onglet en cours à partir d'un menuitem?Ouverture d'une URL dans l'onglet/fenêtre en cours à partir d'une extension Firefox

par exemple. dans mon dossier overlay.xul j'ai la ligne suivante:

<menuitem label="Visit homepage" oncommand="window.location='http://www.somepage.com'"/> 

mais dans firefox, quand je clique sur l'élément de menu, il ouvre l'URL, mais il plisse toute mise en page du navigateur.

Quelle est la bonne façon de faire cela?

Répondre

9

Après avoir parcouru autour, je l'ai trouvé que je devais remplacer le code ci-dessus avec ceci:

<menuitem label="Visit homepage" oncommand="content.wrappedJSObject.location='http://www.somepage.com'"/> 
+0

Une chose que je noterais est que vous pourriez vouloir créer une fonction de Javascript qui manipule ceci, juste au cas où vous voudriez l'employer pour d'autres événements de clic dans votre extension! – Alex

1

Appelez ce JS fonctions sur votre commmand

//open a url current window: 
function openUrl(url) { 
content.wrappedJSObject.location = url; 
newTabBrowser = gBrowser.selectedBrowser; 
newTabBrowser.addEventListener("load", highlight, true); 
} 

//new tab 
function openUrlNewTab(url) { 
var win = Components.classes['@mozilla.org/appshell/window-mediator;1'] 
      .getService(Components.interfaces.nsIWindowMediator) 
      .getMostRecentWindow('navigator:browser'); 
win.gBrowser.selectedTab = win.gBrowser.addTab(url); 
} 
9

D'un menuitem vous pouvez utiliser openUILinkIn. Il fonctionne comme:

openUILinkIn(url, where); 

où peut être: onglet, en cours, la fenêtre (et quelques autres options rarement utilisées)

Si vous voulez se comporter différemment en fonction de ce clavier modificateurs un utilisateur presse, vous peut utiliser une autre fonction whereToOpenLink, qui renvoie tab/current/window en fonction des préférences et des modificateurs de l'utilisateur.

openUILinkIn(url, whereToOpenLink(event)); 

Ainsi j'utilise:

<menuitem label="Visit homepage" 
      oncommand="openUILinkIn('http://example.com/', whereToOpenLink(event))"/> 

Si vous n'êtes pas dans le contexte d'un élément de menu, vous voudrez peut-être vérifier une autre XBL intégré qui ajoute la liaison et l'ouverture HREF pour une étiquette:

<label value="google" class="text-link" href="http://google.com/" /> 
+0

D'où avez-vous obtenu cette information? J'ai cherché en vain pour une documentation réelle sur ce que vous pouvez faire avec Javascript dans une extension FF. – Zarkonnen

+0

@Zark https://developer.mozilla.org/ est le meilleur endroit, mais il peut être difficile de s'y retrouver au début. Garder https://developer.mozilla.org/en/Code_snippets bookmarked est toujours bon. – MatrixFrog

2
<menuitem label="Visit Report Site" oncommand="var win = Components.classes['@mozilla.org/appshell/window-mediator;1'] 
.getService(Components.interfaces.nsIWindowMediator) 
.getMostRecentWindow('navigator:browser'); win.openUILinkIn('http://www.google.com', 'tab');"/> 

Ouvrir une URL dans un nouvel onglet.

Questions connexes