2009-06-28 8 views
1

J'ai écrit un bookmarklet pour chercher un mot dans un dictionnaire chinois:Firefox javascript bookmarklet onglet ouvert en arrière-plan

javascript:Qr=document.getSelection();if(!Qr){void(Qr=prompt('%E8%AF%8D%E8%AF%AD',''))};if(Qr)(function(){window.open('http://nciku.com/search/all/'+Qr);})(); 

Cela ouvre un nouvel onglet avec des résultats de recherche pour votre mot sélectionné ou un mot que vous tapez à l'invite. Est-il possible de charger le nouvel onglet en arrière-plan? Je voudrais rester concentré sur la page que je regarde, et regarder les résultats de la recherche plus tard.

Il y a une option "Quand j'ouvre un lien dans un nouvel onglet, changez-le immédiatement" dans Firefox, cela n'aide pas.

Edit: Notez que ceci est pour mon utilisation, donc une réponse qui me dit comment changer les paramètres de Firefox (3.0.11) pour faire cela fonctionnerait aussi bien. J'ai aussi essayé la modification suivante, mais elle est toujours axée sur le nouvel onglet.

javascript:Qr=document.getSelection();if(!Qr){void(Qr=prompt('%E8%AF%8D%E8%AF%AD',''))};if(Qr)(function(){var%20oldWin=this;window.open('http://nciku.com/search/all/'+Qr);oldWin.focus()})(); 

Edit 2:

En regardant autour pour voir si je peux trouver une réponse que je vois ce gars qui a le problème inverse (de nouveaux onglets ne reçoivent pas le focus, mais il les veut l'avoir) , mais sans résolution:

Possible to set tab focus in IE7 from JavaScript

On parle apparemment d'un objectif de _tab en HTML 5, mais cela ne me aide pas beaucoup.

http://forums.whatwg.org/viewtopic.php?t=185 & highlight = onglet + mise au point

(apparemment en tant que nouvel utilisateur, je ne peux pas poster un lien, donc je l'ai malmené ce

Cela semble assez brisé comportement du navigateur si cela est impossible.

Répondre

1

Apparemment, cela n'est possible qu'avec les fenêtres précédemment ouvertes, pas la fenêtre racine.

appels à window.open avec le même nom de la fenêtre comme une fenêtre déjà existante, charge l'URL dans cette fenêtre et donne une référence à la fenêtre arrière. La fenêtre n'a pas de focus, sa propriété opener n'est pas modifiée et un troisième argument de window.open est ignoré. Vous pouvez utiliser la méthode de mise au point pour donner le focus de la fenêtre manuellement.

var oldWin = window.open("url.html","oldName"); 
oldWin.focus(); // give focus 
+0

Ajout de window.focus(); à la fin ne semble pas avoir d'effet. Est-ce ainsi que je devrais l'utiliser? –

+0

J'ai ajouté du code, essayez ça. –

+0

Modification du bit à la fin de: if (Qr) (function() {var% 20oldWin = window.open ('http://nciku.com/search/all/'+Qr); oldWin.focus()})(); ouvre toujours le nouvel onglet au premier plan. J'ai également essayé d'ajouter ceci, sans succès: if (Qr) (fonction() {var% 20oldWin = ceci; window.open ('http://nciku.com/search/all/'+Qr); oldWin.focus()})(); –

1

Non, pas JavaScript par programme. Vous n'avez aucun contrôle sur les préférences du navigateur de l'utilisateur, seulement ils ont le contrôle sur cela. En outre, même si avait, vous ne devriez pas le faire, car cela sape le contrôle que votre script vous est donné par le navigateur. Si l'utilisateur veut qu'une page s'ouvre en arrière-plan, il devrait pouvoir le contrôler, pas vous, en tant que développeur.

+1

Dans ce cas user == developer == moi S'il y a un moyen de définir les préférences de mon navigateur pour me permettre de faire cela, ce serait une bonne réponse aussi, mais je ne peux pas en trouver un –

0

Face à la même question, je ne l'ai remarqué que si vous alert() quelque chose juste après avoir ouvert la fenêtre, Firefox ne passer à l'onglet nouvelle ouverture.

Questions connexes