2009-06-28 11 views
1

ich ein Bookmarklet geschrieben habe ein Wort nachzuschlagen in einem chinesischen Wörterbuch:Firefox Javascript Bookmarklet offen Tab im Hintergrund

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

Dies eröffnet eine neue Registerkarte mit den Suchergebnissen für Ihr gewähltes Wort oder ein Wort, das Sie eingeben in der Aufforderung. Gibt es eine Möglichkeit, den neuen Tab im Hintergrund zu laden? Ich möchte den Fokus auf die Seite richten, die ich mir ansehe, und später auf die Suchergebnisse schauen.

Es gibt eine Option "Wenn ich einen Link in einem neuen Tab öffnen, wechseln Sie sofort zu" in Firefox, das hilft nicht.

Edit: Beachten Sie, dass dies für meine Verwendung ist, so eine Antwort, die mir sagt, wie Firefox (3.0.11) Einstellungen ändern, um dies zu tun, würde auch funktionieren. Ich habe auch die folgende Änderung versucht, aber es konzentriert sich immer noch auf den neuen Tab.

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:

um Blick zu sehen, ob ich eine Antwort finden kann ich diesen Kerl sehen, wer das entgegengesetzte Problem bekommt ist (neu Tabs nicht bekommen, Fokus, aber er will, dass sie es haben) , aber ohne Auflösung:

Possible to set tab focus in IE7 from JavaScript

Es gibt offenbar über ein _tab Ziel in HTML 5, spricht aber das macht mir nicht viel helfen.

http://forums.whatwg.org/viewtopic.php?t=185 & highlight = Tab + Fokus

(anscheinend als neuer Benutzer ich nur einen Link posten kann, also habe ich es zerfleischt)

Dies scheint ziemlich gebrochen Browser-Verhalten, wenn dies unmöglich ist.

Antwort

1

Scheinbar ist dies nur mit zuvor geöffneten Fenstern möglich, nicht im Root-Fenster.

Anrufe mit den gleichen Fenstern Namen wie ein bereits bestehenden Fenster window.open, lädt die URL in dieses Fenster und gibt einen Verweis auf das Fenster zurück. Das Fenster erhält keinen Fokus, seine Opener-Eigenschaft wird nicht geändert, und ein drittes Argument für window.open ist ignoriert. Sie können die Fokusmethode verwenden, um den Fensterfokus manuell anzugeben.

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

window.focus() hinzufügen; am Ende scheint keine Wirkung zu haben. Soll ich es benutzen? –

+0

Ich habe Code hinzugefügt, probiere das aus. –

+0

Ändern des Bits am Ende zu: if (Qr) (function() {var% 20oldWin = window.open ('http://nciku.com/search/all/'+Qr); oldWin.focus()})(); Öffnet den neuen Tab im Vordergrund. Ich habe auch versucht, dies ohne Erfolg hinzuzufügen: if (Qr) (function() {var% 20oldWin = dies; window.open ('http://nciku.com/search/all/'+Qr); oldWin.focus()})(); –

1

Nein, nicht programmatisch durch JavaScript. Sie haben keine Kontrolle über die Browsereinstellungen des Benutzers, nur haben sie die Kontrolle darüber.

Darüber hinaus, auch wenn Sie haben die Kontrolle darüber haben, sollten Sie es nicht tun, weil es die Kontrolle untergräbt, dass Ihr Skript Ihnen vom Browser gegeben wird. Wenn der Benutzer möchte, dass eine Seite im Hintergrund geöffnet wird, sollte er in der Lage sein, sie zu steuern, nicht Sie als Entwickler.

+1

In diesem Fall user == developer == me. Wenn es eine Möglichkeit gibt, meine Browsereinstellungen so zu setzen, dass ich dies tun kann, wäre das auch eine gute Antwort, aber ich kann keinen finden –

0

das gleiche Problem mit Blick auf, bemerkte ich nur, dass, wenn Sie alert() etwas kurz nach dem Öffnen des Fensters, würde Firefox auf die sich neu öffnenden Registerkarte wechseln nicht.