Newsgroup: it.comp.lang.javascript
Titolo: Titolo pop-up

Questo link apre un file (PDF) in una pop-up:
<A href="#" onclick="popup =
window.open('getfile.php?tbl=libri&col=anteprima&id=<?= $id
?>&tipo=9',  'PopupPage',  'height=650, width=550, scrollbars=yes,
resizable=yes'); return false;">
  link
</A>
E' possibile impostare il titolo della pop-up?
Faccio notare che apro direttamente un file (PDF), non una pagina web
a cui posso settare il TITLE. Purtroppo la pop-up quando si apre
contiene il path completo del file, che č piuttosto brutto da vedere..
Qualche idea?
Mhaxx

 E' possibile impostare il titolo della pop-up?
Uhm... e se apri un iframe dentro la popup?
function apri(file,titolo) {
popup = window.open('','_blank','width=650,height=550,scrollbars=yes,left=0,top=0');
popup.document.open();
popup.document.write('<html>\n<head>\n<title>'+titolo+'</'+'title>\n</'+'head>\n');
popup.document.write('<body style="margin:0px"><iframe src="'+file+'" width=650 height=550></iframe>');
popup.document.write('</'+'body>\n</'+'html>');
popup.document.close();
}
Poi richiami il file in questo modo:
<a href="getfile.php?tbl=libri&col=anteprima&id=<?= $id?>&tipo=9" target="_blank"
onclick="apri('getfile.php?tbl=libri&col=anteprima&id=<?= $id?>&tipo=9','Pippo'); return false">
Se tutto va bene, la popup avrà come titolo "pippo".
Non ho provato il codice, ma così a naso dovrebbe andare
(e il file dovrebbe essere accessibile anche se js non è attivo - es: google).
MaRoK

>il comportamento del browser non dipende da te.
Quindi non ho possibilità di cambiare quel titolo?
A meno che non la faccia diventare una pagina web con *dentro* il PDF,
in questo modo ho il controllo del titolo: esatto?
Mhaxx

>Non ho provato il codice, ma cosě a naso dovrebbe andare
Ottimo!
Grazie tante..
Mhaxx

>> E' possibile impostare il titolo della pop-up?
Questo popup.document.title = 'pippo'; usato subito dopo la mia
istruzione (quella che ho dato nel mio primo post) dà errore. Ma
perchè?
Mhaxx

 perchè?
Posta il codice completo che hai usato
(o magari un link...)
MaRoK

> perchè?
No no, forse non mi sono spiegato bene..
Il tuo codice (quello con l'IFRAME) funziona, eccome!
Mi stavo però domandando come mai non possa funzionare un
popup-document.title = "pippo", cioè questa cosa qui:
<A href="#" onclick="popup =
window.open('getfile.php?tbl=libri&col=anteprima&id=<?= $id
?>&tipo=9',  'PopupPage',  'height=650, width=550, scrollbars=yes,
resizable=yes'); popup.document.title = 'pippo'; return false;">
  link
</A>
In pratica funziona tutto, solo che il titolo non viene impostato.
Volevo capire come mai..
Mhaxx

 resizable=yes'); setTimeout(\"popup.document.title = 'pippo'\",1000);
return false;">

>prova a cambiarlo così per vedere se funziona:
A parte che ho dovuto cambiarlo in:
setTimeout('popup.document.title = \'pippo\'', 3000);
perchè com'era mi dava errore in caricamento di pagina, cmq non
funziona, passato il tempo (3 sec) mi dà errore! ;-(
Mhaxx

 cmq non funziona, passato il tempo (3 sec) mi dą errore! ;-(
Per curiositą ho provato, funziona correttamente; probabilmente stai
sbagliando qualcos'altro

>Per curiosità ho provato, funziona correttamente; probabilmente stai
Questo è esattamente il mio codice:
<A href="#" onclick="popup =
window.open('./include/getfile.php?tbl=libri&col=anteprima&id=<?= $id
?>&tipo=9', 'PopupPage', 'height=650, width=550, scrollbars=yes,
resizable=yes'); setTimeout('popup.document.title = \'pippo\'', 3000);
return false;" class="marcaBgColor">
  <?= ($riga["anteprima"] !== null) ? "pag
$riga[anteprima_inizio]-$riga[anteprima_fine]" : "" ?>
</A>
A me dà errore dopo 3 secondi.. prova a copia-incollarti il mio da te
e dimmi se funziona..
Fra l'altro: perchè bisogna usare seTimeout e non bastava fare come
avevo detto io popup.document.title = 'pippo'?
Grazie, ciao.
Mhaxx

 avevo detto io popup.document.title = 'pippo'?
Perché la popup potrebbe non aprirsi istantaneamente

Perché la popup potrebbe non aprirsi istantaneamente
.. e quindi il comando di impostazione titolo andrebbe a vuoto in quel
caso?
Ma allora, se per sfiga, l'apertura dura piů del timeout messo, sono
fregato, cioč non viene impostato il titolo?
D'altro canto se metto un timeout troppo alto viene meno l'uso del
titolo, perchč a quel punto l'utente si accorge del titolo iniziale
prima che questo venga cambiato. Non posso collegare il comando di
impostazione titolo con l'evento di fine apertura pop-up?
Forse chiedo troppo.. :-))
Mhaxx

 impostazione titolo con l'evento di fine apertura pop-up?
Richiamarlo su onload?
MaRoK

>Richiamarlo su onload?
Su onload del BODY intendi? Ma guarda che quel link apre un file PDF,
non apre una pagina web..
Mhaxx

 Su onload del BODY intendi? Ma guarda che quel link apre un file PDF, non apre una pagina web..
Ah già, dimenticavo che aprivi direttamente il pdf.
Mmmmmmmmmm... a questo punto non mi viene in mente altra soluzione
rispetto a quella dell'iframe (o object, se preferisci) che ti avevo postato prima.
Anche la mia mente malata ha dei limiti! :)
MaRoK

> Ah già, dimenticavo che aprivi direttamente il pdf.
Io invece continuo a non capire, visto che dice che usa (riporto
testualmente):
<A href="#" onclick="popup =
window.open('./include/getfile.php?tbl=libri&col=anteprima&id=<?= $id
?>&tipo=9', 'PopupPage', 'height=650, width=550, scrollbars=yes,
resizable=yes'); setTimeout('popup.document.title = \'pippo\'', 3000);
return false;" class="marcaBgColor">
Dov'è il pdf?
E' una pagina php, che poi setterà probabilmente il mime-type corretto (o
altre diavolerie simili) per passare il file pdf...ma la pagina che apre,
IMHO, è una normale pagina, non un link diretto a un file con estensione
pdf...
Comunque ecco spiegato il perché a lui non funziona e a me sì: invierà al
client il pdf, e quindi l'html non c'è, e quindi immagino non esista
l'oggetto document...

Scusate se mi intrometto... l'argomento mi incuriosisce... Ma la soluzione
dell'iframe funziona con l'html (e javascript, s'intende), o richiede php?
Se dovessi caricare il file "pippo.pdf" come andrebbe adattata la soluzione
dell'iframe?
N.B. Non credo di poter usare php sul server Tiscali.

l'oggetto document...
Cioè?..
Mhaxx

 dell'iframe?
La funzione rimane quella:
function apri(file,titolo) {
popup = window.open('','_blank','width=650,height=550,scrollbars=yes,left=0,top=0');
popup.document.open();
popup.document.write('<html>\n<head>\n<title>'+titolo+'</'+'title>\n</'+'head>\n');
popup.document.write('<body style="margin:0px"><iframe src="'+file+'" width=650 height=550></iframe>');
popup.document.write('</'+'body>\n</'+'html>');
popup.document.close();
}
Poi richiami il file in questo modo:
<a href="pippo.pdf" target="_blank" onclick="apri('pippo.pdf','Pippo'); return false">clicca qua</a>
650x550 è la dimensione della finestra, l'ho conservata dall'esempio precedente
ma la puoi ovviamente cambiare o passare come parametro
(io generalmente prendo il minimo tra la dimensione voluta e lo schermo).
MaRoK

Grazie infinite per la risposta.
N.B. Ho notato che, se si clicca nella finestra appena aperta sul pulsante
"Salva", viene proposto il nome originale del file.
Se si vuole impedire all'utente di accedere direttamente al file, quindi, si
può pensare di inserirlo in una sottodirectory di cui l'utente non possa
immaginare il nome. Tutto inutile, però, se l'utente va a guardare la
cronologia, dove è perfettamente visibile il vero nome (NON pippo), e
posizionando il mouse nell'area, persino l'indirizzo completo.
Ciao
Marco

 "Salva", viene proposto il nome originale del file.
Se hai questa esigenza puoi far qualcosa server-side, lato client non è
possibile

 Cioè?..
Cioé quella che apri NON è una pagina html (che ha il suo content-type), e
quindi non ha oggetto document etc, e quindi non puoi farci nulla IMHO


No, al momento non ho questa esigenza, era più che altro una curiosità.
Ho preferito, a suo tempo, una routine per criptare i nomi dei files, il che
dovrebbe, tra l'altro, evitare l'indirizzamento da parte dei motori di
ricerca.