2013-06-15 7 views
6

Sto provando a fare qualche piccola web html, e lo troverei incredibilmente utile per poter vedere gli aggiornamenti in tempo reale del file html visualizzati attraverso un browser ogni volta che salgo il mio file. So che probabilmente ci sono IDE là fuori che fanno questo per te, e se ne consigli qualcuno, perfavore, ma sto cercando di creare uno script che aprirà il file nel browser, chiudendo la versione del file che era già aperto, in modo che possa continuare a fare tutta la mia programmazione in vim.auto-reload html file con un browser tramite il comando terminale

So che posso utilizzare il seguente in Mac OSX, per aprire il file in una nuova scheda del browser corrente:

open foo.html 

ma, se ho questo che si verificano su un loop a tempo, o ogni tempo scrivo (: w) in vim, il mio browser si riempirà di nuove schede. C'è un modo per chiudere la vecchia scheda quando si apre la nuova scheda? O c'è un approccio ancora migliore a questo che non ho considerato? Sarebbe molto preferibile se potessi continuare a utilizzare vim nel terminale.

Grazie in anticipo.

+0

ho trovato alcune soluzioni alternative/Kluges qui: [/r/commandline](http://www.reddit.com/r/commandline/comments/1gdi4e/im_stumped_anyone_know_how_to_autoreload_an_html /) – ben

+0

Questa soluzione non utilizza la riga di comando ma è possibile aggiungere un piccolo JavaScript che ricarica la pagina usando 'location.reload();' ogni tanto e accenderlo solo durante lo sviluppo. –

risposta

3

Se esiste già una scheda per foo.html, open foo.html dovrebbe mettere a fuoco quella scheda in Safari. Per Chrome, è possibile utilizzare qualcosa di simile:

set u to "http://t.co/" 
tell application "Google Chrome" 
    repeat with w in windows 
     set i to 0 
     repeat with t in tabs of w 
      set i to i + 1 
      if URL of t is u then 
       set active tab index of w to i 
       set index of w to 1 
       tell t to reload 
       activate 
       return 
      end if 
     end repeat 
    end repeat 
    open location u 
    activate 
end tell 

ho appena assegnato ⌘R al open "$TM_FILEPATH" -a Safari nel text.html ambito in TextMate.Ho anche abilitato il salvataggio dei documenti quando si passa a un'altra applicazione, quindi fondamentalmente fa gli ultimi tre passaggi del ciclo di aggiornamento dell'applicazione di modifica-save-switch.

Altre opzioni:

+0

Il supporto AppleScript è un obiettivo mobile, ma questo script funziona per me subito con macOS 10.12.6 e Chrome 62. La prima esecuzione viene caricata, la seconda viene aggiornata, anche se sono su un'altra scheda. Grande! ... Non funziona se devo passare a un'altra finestra, tuttavia: trova il numero di tabulazione corretto, quindi lo ricarica nella finestra corrente. – JeremyDouglass

10

È possibile utilizzare AppleScript per ricaricare la scheda. Vedere la risposta di Benjie per this question
Utilizzare osascript per chiamare AppleScript dallo script di shell. Otterrete qualcosa di simile:

osascript -e 'tell application "Google Chrome" to tell the active tab of its first window to reload' 

In alternativa si può usare qualcosa di simile vicino a chiudere tutte le schede precedenti:

tell application "Google Chrome" 
    set windowList to every tab of every window whose URL starts with "http://stackoverflow.com" 
    repeat with tabList in windowList 
     repeat with thisTab in tabList 
      close thisTab 
     end repeat 
    end repeat 
end tell 
0

Può essere eccessivo per la vostra applicazione, ma io uso rendere i file per tutti i miei progetti HTML. Realizzo solo siti statici per me stesso, ma uso Less e Jade (a volte php compilato in pagine statiche localmente, è sciocco che non puoi includere dinamicamente con jade) e make è davvero ben integrato con vim. Puoi creare regole per compilare, ricaricare, spingere sul server, qualunque cosa. Il modo in cui ottengo aggiornamenti dal vivo del browser è quello di avviare un server Node o Python per servire l'html con un 'osservatore' di javascript in più ci sono molte varietà, a seconda di quali altre tecnologie si stanno utilizzando.

0

È possibile ottenere un browser in grado di ricevere comandi da un socket, come uzbl, luakit o dwb.

È possibile aggiungere questa funzionalità (ascoltando un socket o anche un file) con un'estensione (addon, plug-in, qualunque sia il browser preferito che chiama).

È possibile inserire alcuni javascript nella pagina che si sta modificando, in modo che venga ricaricato su alcuni segnali che è possibile controllare dalla CLI.

È possibile scrivere uno script che uccide il browser e lo riapre. Alcuni browser cercheranno di caricare una versione cache della pagina. Per questi è preferibile utilizzare la stringa di query e creare ogni volta un URI univoco (ad esempio open "foo.html?$(date +%s)").

Le possibilità sono infinite!

Problemi correlati