Newsgroup: it.comp.lang.javascript
Titolo: href vs window.open

Salve a tutti, sto leggendo quà e là e ho trovato che tra i vari modi di
aprire nuove finestre.
che differenze ci sono tra
<a href="javascript:void(open_new_window());> apri nuova finestra </a>
e
<input type="button" id="test" onclick="javascript:open_new_window();">
dove open_new_window() utilizza la funzione window.open
grazie Fede.

 dove open_new_window() utilizza la funzione window.open
Non mettere quel javascript che onclick non significa nulla.
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

 <input type="button" id="test" onclick="javascript:open_new_window();">
Qui lo pseudo-protocollo non serve, in quanto non la stai eseguendo come se
fosse un URL; bensi' la stai chiamando da un event-handler (onclick in
questo casO). Quindi il codice corretto sarebbe:
<input type="button" id="test" onclick="open_new_window();">
Il discorso si sposta non tanto sulle "differenze tra aprire due finestre
in un modo o nell'altro", in quel caso, all'atto pratico, non hai
differenze di sorta; bensi' sulla differenza che c'e' tra invocare una
funzione tramite href o event-handler.
Guarda ad esempio questo codice:
<a href="javascript:void(open_new_window());" onclick="alert('la finestra
non la voglio aprire');return false"> apri nuova finestra </a>
In questo modo l'href non verra' mai "interrogato", e quindi la funzione
mai invocata. Questo perche' "onclick" e' un event-handler che viene
scatenato prima dell'esecuzione del link stesso, e con "return false" eviti
il comportamento di default (l'esecuzione dell'attributo href).
E questo puo' essere uso in diversi casi. Ad esempio:
<a href="no-js.htm" onclick="doSomething();return false">click me</a>
Il codice scritto nell'event-handler "onclick" viene eseguito solo nel caso
in cui JS sia abilitato, quindi se uno clicca su quel link e non ha
javascript abilitato viene mandato ad una pagina (no-js.htm) dove gli viene
detto che e' necessaria l'abilitazione di javascript per eseguire quella
data azione.
Se uno invece ha js abilitato, l'attributo href non verra' mai interrogato.
In una galleria di immagini, puoi essere utile avere:
<a href="image.jpg" onclick="openPopup('image.jpg');return false">click
me</a>
Solito discorso: chi ha js abilitato vedra' l'immagine in una popup; chi
non ha js abilitato vedra' cmq l'immagine cliccando sul link.
Inoltre per chi ha browser che permettono la navigazione via tab, sara'
possibile aprire l'immagine in una nuova tab (con gli altri browser sara'
cmq possibile aprire l'immagine in una nuova finestra, oltre che nella
popup).
-- 
ZER0://coder.gfxer.web-designer/
~ Ci siamo fatti una scopata cosi' eccezionale che anche i vicini hanno
fumato una sigaretta.
on air ~ "Local H - Everyone Alive"

 Da evitare; usa href="#" onclick="return open_new_window()" (e nella
secondo me è sbagliato.
dovresti mettere:
<a href="pagina.html" onclick="return open_new_window()">testo</a>
tanto l'onclick viene preso prima e chi ha js disabilitato vede cmq qualcosa

 
Ok, innanzi tutto grazie por la consueta disponibilitą.
Pensavo che ci fossero differenze profonde, ad es. sul mantenimento della
sessione: nell'applicazione che sto sviluppando uso sempre la sintassi del
secondo tipo ma ho comportamenti diversi se uso Firefox o IE.
es window.open("servlet/miaServlet?a=3&b=5&c=12", "_blank", "parametri
....");
ho che in internet explorer la sessione rimane la stessa mentre in mozilla
no.
Se specifico un nome di finestra ho che mozilla funziona mentre ie ha
problemi se la chiamata avviene da due finestre.
come mai questa differente gestione?
Grazie Fede.

 come mai questa differente gestione?
Sono scelte di progetto di chi sviluppa il browser.
-- 
ZER0://coder.gfxer.web-designer/
~ Plagiarism is copying from one source;
research is copying from two or more
(Wilson Mizner)
on air ~ "Luca Dirisio - Calma e sanguefreddo"

 
Dunque: apro due finestre di IE A1 e A2. Faccio 2 connessioni su un sito. 
Se dalla finestra A1 apro la finestra B con window.open("b.html", "B") e in
seguito dalla finestra A2 apro la finestra B con window.open("b.html", "B")
ho che la finestra B aperta da A2 ha la sessione di A1.
Cosa complessa vero?
Ho risolto assegnando ad ogni nuova finestra che apro un nome generato a
partire dal valueOf() della data corrente.
Ciao Fede.

 partire dal valueOf() della data corrente.
Beh, ma ha senso? A questo punto hai un nome "randomico" (nel senso che non
lo sai a priori), tanto vale che tu non gli associ alcun nome; anche
perche' se vuoi riferiti a quella finestra devi salvarti il nome e
"portartelo appresso".. e a questo punto tanto vale che ti salvi
direttamente il riferimento fisico alla finestra, e buona notte ai
suonatori.
-- 
ZER0://coder.gfxer.web-designer/
~ Non esistono donne brutte. Dipende solo da quanta vodka bevi.
(proverbio russo)
on air ~ "Madonna - Love Profusion"

 suonatori.
Il senso è che se uso "_blank", invece di un nome a caso, ho che in IE
tutto è OK ma in Firefox perdo la sessione a cui è legata la connessione al
DB e pertatno mi va in errore.
Alle finestre che apro volevo dare un comportamento simile ad una finestra
che compare quando vuoi salvare un documento word: ti viene proposto il
nome e all'OK procede al salvataggio.
Magari c'era un'altra strada, questa è la prima che mi è venuta in mente e
non mi sembrava avesse controindicazioni.
Grazie ancora.
Fede.

 nome e all'OK procede al salvataggio.
Non ho ben capito il discorso, evidentemente mi manca il contesto.. va beh,
c'e' anche da dire che ho il cervello in fase di stallo in questo preciso
momento.. :)
-- 
ZER0://coder.gfxer.web-designer/
~ "In svizzera noi non avevamo il campeggio, ma il Lager."
(Domenico, durante una discussione sui campeggi per bimbi)
on air ~ "Utada Hikaru - Hikari - PlanitB Remix"

 momento.. :)
l'esempio č su
http://demo.smeup.com/bici.inc
clicca su "Save As" dopo aver scelto un modello di bici.
Fede.
p.s. che giudizio dai sul sito?