2012-12-20 14 views
12

Sto utilizzando la console JavaScript di Chrome (Se si utilizza Chrome o Chromium, si può semplicemente premere Ctrl + Maiusc +J ora per aprirlo) sotto la scheda aperta corrente.Come attivare la scheda dalla console di Javascript qui sotto?

C'è qualcosa che posso immettere nella console in modo che il documento nella scheda in alto ottenga lo stato attivo e che la console perda lo stato attivo?

ho provato con

chrome.tabs 

ma dà solo

undefined 
+5

Ho sentito che volevi saltare questa domanda, quindi ecco una piccola spinta :) –

+0

Grazie, in un'ora posso mettere una taglia su questo, quindi non che gli altri utenti pensano che sia solo una domanda allentata. Posso immaginare che non è facile rispondere in quanto si potrebbe pensare in prima persona che non è possibile e per rispondere bisogna conoscere Google Chrome/Chromium abbastanza bene per sapere in realtà * se è possibile o meno. – hakre

+0

Probabilmente hai già trovato [chrome.tabs docs] (http://developer.chrome.com/extensions/tabs.html) nella libreria di estensioni di Chrome, sembra che 'chrome.tabs' sia limitato per essere utilizzato dal codice di estensione. Se inserisci "chrome" nella console, avrai tutte le proprietà disponibili dalla console. Vedrò se riesco a trovare una soluzione alternativa. – SaschaM78

risposta

8

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

dice

(F6) O (Maiusc + 0 F6)

ma dovrete passare attraverso un mucchio di cose prima di raggiungere il webcontent principale.

+0

Con * "accesso alla console" * In realtà intendevo digitare codice javascript e premere invio;) - Ma il tasto di scelta rapida è comunque accolto, grazie per il suggerimento. – hakre

+0

FWIW, ho trovato una mezza risposta. https://developer.chrome.com/extensions/messaging.html – ShaggyInjun

+0

Vale a dire per estensioni, possono accedere a 'chrome.tabs' se l'utente lo ha consentito (l'estensione chiede di ottenere le autorizzazioni quando installato). – hakre

2

Secondo Firebug's Command Line API* wikipage, non c'è modo; produrrà solo i dati relativi agli input.

* che è ciò che la console JavaScript utilizza

+0

Anche questo è un suggerimento su Firebug (e potenzialmente Chrome), questo non deve significare che non ci sia nulla che possa farlo in Google Chrome. Solo notando. Grazie per il collegamento comunque, non ero a conoscenza di quell'API. – hakre

6

L'unico modo per ottenere l'attenzione senza chiudere la console potrebbe essere quella di chiamare sia alert();, confirm(); o prompt();.
In alternativa, chiudendo la console (window.open("javascript:close()","_self");), la scheda principale può diventare attiva.

+0

Questo funziona effettivamente con 'alert()', 'confirm()' o 'prompot()' ma ha l'effetto collaterale di avere quella finestra di messaggio lì. Quindi non mette a fuoco la scheda * ma * quelle caselle di messaggio. Comunque, grazie per averlo suggerito. Chiamare 'window.open (" javascript: close() "," _ self ")' comunque non mi dà molto effetto. – hakre

+0

Awared per la risposta più creativa finora. – hakre

1

Non definirei questa soluzione elegante in alcun modo, ma come un trucco, farà il lavoro.

La tua domanda è "come focalizzare il documento principale da alla Console di Chrome"; con quello, sto gettando in un elemento intermedio - una finestra popup. L'idea è, se riesci a creare una finestra popup che si chiude da solo (dalla Console), quando si chiude, lo stato attivo torna alla finestra principale. In questo caso, è il documento effettivo in cui ti trovavi, non la Console in Chrome.

Ecco il codice completo laid-out:

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

Questo codice può essere crollato in un one-liner che può essere la copia + incollata nella console e, dopo aver colpito Enter sarà popup, chiudi e riduci l'attenzione al documento originale. Qualunque elemento della pagina si concentri prima di concentrarti sulla console, o su qualsiasi elemento che hai modificato tieni a fuoco su nella console, la console (tramite document.getElementById('something').focus() o simile) si concentrerà sulla pagina.

L'avvertenza a questo approccio è che il sito Web su cui si utilizza deve disporre di popup attivati. In alternativa, e non proprio consigliato, puoi semplicemente "attivare tutti i popup" in Chrome.

Come ulteriore aggiunta, se si intende utilizzare più volte questa stessa pagina (senza aggiornamento), è possibile racchiudere il javascript aggiunto alla pagina in una chiamata di funzione e chiamare ogni volta tale funzione. Per esempio:

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

Poi basta chiamare refocus(); ogni volta che si vuole dare attenzione torna al genitore. Naturalmente, se si lascia la pagina corrente per qualsiasi motivo, è necessario rieseguire di nuovo il blocco completo del codice.

Per quello che vale, se si vede che si utilizza molto, è inoltre possibile aggiungere l'estensione Tampermonkey e salvare questo blocco di codice in una funzione lì; quindi, non avresti mai bisogno di preoccuparti di eseguire l'intera operazione ogni volta: dovresti solo chiamare il nome della funzione che hai salvato.

One-liner dall'alto (per copia + incolla):

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

Invece di incollare il codice in consolle:

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

È possibile incollare ed eseguirlo dalla barra url:

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

È anche possibile aggiungere questo javascript: url come segnalibro, questo è il numero di frammenti di codice ("bookmarklet") eseguiti.

+0

Non voglio interrompere qui la tua motivazione, ma esiste una risposta che suggerisce "alert()". E tecnicamente non è una risposta (come già commentato), perché dà il focus alla finestra di avviso, non alla scheda. Mi serve l'attenzione nella scheda. – hakre

Problemi correlati