2012-12-20 9 views
12

używam konsoli JavaScript Chrome (Jeśli używasz Chrome lub chromu, można po prostu nacisnąć Ctrl+ SHIFT + J teraz, aby go otworzyć) poniżej aktualnej karcie otwarty.Jak aktywować zakładkę z konsoli Javascript poniżej?

Czy jest coś, co mogę wprowadzić do konsoli tak, że dokument na powyższej karcie dostaje fokus, a konsola traci ostrość?

Próbowałem z

chrome.tabs 

ale to tylko daje

undefined 
+5

Słyszałem, że chciałeś podniecić to pytanie, więc tutaj jest małe pchnięcie :) –

+0

Dzięki, za godzinę mogę dać nagrodę za to, więc inni użytkownicy nie uważają, że to tylko luźne pytanie. Mogę sobie wyobrazić, że nie jest łatwo odpowiedzieć, ponieważ ktoś mógłby pomyśleć z pierwszej ręki, że nie jest to możliwe i aby odpowiedzieć na to pytanie, trzeba znać Google Chrome/Chromium całkiem dobrze, aby faktycznie * wiedzieć * jeśli to możliwe, czy nie. – hakre

+0

Prawdopodobnie znalazłeś już [Chrome.tabs docs] (http://developer.chrome.com/extensions/tabs.html) w bibliotece rozszerzeń Chrome. Wygląda na to, że 'chrome.tabs' jest ograniczone do użycia przez rozszerzenie kodu. Jeśli wpiszesz "chrome" w konsoli, dostaniesz wszystkie właściwości dostępne z konsoli. Zobaczę, czy uda mi się znaleźć obejście. – SaschaM78

Odpowiedz

8

https://support.google.com/chrome/bin/answer.py?hl=en&answer=157179

mówi

(F6) lub (Shift, + F6)

, ale musisz przejść przez kilka rzeczy, zanim dotrzesz do głównego webcontent.

+0

Z * "wejdź do konsoli" * Tak naprawdę chodzi mi o wpisanie kodu javascript tam i naciśnięcie klawisza enter;) - Ale klawisz skrótu jest i tak mile widziany, dzięki za podpowiedź. – hakre

+0

FWIW, znalazłem pół odpowiedzi. https://developer.chrome.com/extensions/messaging.html – ShaggyInjun

+0

To jest dla extenstions, oni mogą uzyskać dostęp do 'chrome.tabs' jeśli użytkownik na to zezwolił (rozszerzenie prosi o uzyskanie uprawnień po zainstalowaniu). – hakre

2

Według Firebug's Command Line API* wikipage, nie ma sposobu; będzie tylko wyprowadzać dane o, ahem, wejściach.

*, która jest co konsola JavaScript wykorzystuje

+0

Nawet jeśli jest to dobra wskazówka dotycząca Firebug (i potencjalnie Chrome), nie może to oznaczać, że nie ma w tym nic ponadto, co można zrobić w Google Chrome. Po prostu zauważam. Dzięki za link, nie wiedziałem o tym API. – hakre

6

Jedynym sposobem, aby uzyskać ostrość bez zamykania konsoli byłoby zadzwonić albo alert();, confirm(); lub prompt();.
Alternatywnie zamykając konsolę (window.open("javascript:close()","_self");), główna zakładka może uzyskać fokus.

+0

To faktycznie działa z 'alert()', 'confirm()' lub 'prompot()' ale ma efekt uboczny posiadania tamtej skrzynki wiadomości. Więc nie koncentruje się na karcie *, ale * na tych skrzynkach komunikatów. W każdym razie, dzięki za sugestię, że. Wywołanie 'window.open (" javascript: close() "," _ self ")' nie daje jednak dużego efektu. – hakre

+0

Zainteresowany najbardziej twórczą odpowiedzią. – hakre

1

Nie nazwałbym tego w żaden sposób eleganckim rozwiązaniem, ale jako haker, wykona to zadanie.

Twoje pytanie brzmi: "jak ustawić główny dokument z konsoli Chrome"; z tym, wrzucam środkowy element - okienko wyskakujące. Chodzi o to, że jeśli możesz utworzyć okno wyskakujące, które samo się zamyka (z konsoli), po jego zamknięciu fokus powraca do okna nadrzędnego. W tym przypadku jest to rzeczywisty dokument, w którym byłeś, a nie konsola w Chrome.

Oto pełny kod ustanowione-out:

var openScript = document.createElement('script'); 
openScript.innerHTML = 'openWindow = window.open(""); openWindow.document.write(\'<script>window.close();</script>\');'; 
document.body.appendChild(openScript); 

Ten kod może być zwinięte w jedną wkładką, która może być kopia + wklejony do konsoli, a po trafieniu Wprowadź będzie podręcznego, zamknąć i przywrócić ostrość do oryginalnego dokumentu. Niezależnie od tego, na którym elemencie strony skupiłeś uwagę, zanim skupisz się na konsoli, lub jakikolwiek element, który zmieniłeś, skupi się na w, konsola (poprzez document.getElementById('something').focus() lub podobna), skupi się na stronie.

Ograniczeniem tego podejścia jest to, że strona internetowa, z której korzystasz, musi mieć włączone wyskakujące okienka. Alternatywnie i niezbyt polecam, możesz po prostu "włączyć wszystkie wyskakujące okienka" w Chrome.

Jako dodatkowy dodatek, jeśli zamierzasz używać tej wielokrotności na tej samej stronie (bez odświeżania), możesz zawinąć javascript, który został dodany do strony w wywołaniu funkcji i po prostu wywołać tę funkcję za każdym razem. Na przykład:

... 
openScript.innerHTML = 'function refocus() { openWindow = window.open(""); openWindow.document.write(\'<script>window.close();</script>\'); }'; 
... 

Następnie wystarczy zadzwonić refocus(); gdy chcesz dać ostrość z powrotem do rodziców. Oczywiście, jeśli z jakiegokolwiek powodu opuścisz bieżącą stronę, musisz ponownie uruchomić pełny blok kodu.

Za to, co warto, jeśli widzisz, że dużo z tego korzystasz, możesz również dodać rozszerzenie Tampermonkey i zapisać ten blok kodu w funkcji tam; wtedy nigdy nie będziesz musiał się martwić, że uruchomisz wszystko za każdym razem - po prostu zadzwonisz na nazwę funkcji, którą zapisałeś.

One-liner z góry (do łatwego kopiowania + wklej):

var openScript = document.createElement('script'); openScript.innerHTML = 'openWindow = window.open(""); openWindow.document.write(\'<script>window.close();</script>\');'; document.body.appendChild(openScript); 
-1

zamiast wklejania kodu w konsoli:

var a = function() {my code...}; a() 

Możesz wkleić i uruchomić go z paska URL:

javascript:var a = function() {alert('hi');}; a() 

Możesz nawet dodać ten javascript: url jako zakładkę, w ten sposób uruchomionych jest wiele fragmentów kodu ("bookmarklets").

+0

Nie chcę tu rezygnować z motywacji, ale odpowiedź sugerująca "alert()" już istnieje. Technicznie nie jest to odpowiedź (jak już to skomentowano), ponieważ skupia się na polu ostrzeżenia, a nie na karcie. Potrzebuję fokusu w zakładce. – hakre