Newsgroup: it.comp.www.php
Titolo: scrittura js nell'onload tramite PHP

Ciao, ho un problrma strano.
Faccio scrivere a php la chiamata a una funziona javascript per aprire 
un popup.
1) Firefox fa aprire il popup e scrive quanto č necessario:
<body onLoad="javascript:apripop()">
(aggiungo che questo viene scritto solo se NON č settata una variabile 
di sessione)
2) IE scrive:
<body onLoad="">
Il codice utilizzato č:
<body onLoad="<?php 
if(!isset($_SESSION['popup'])){$_SESSION['popup']=1;echo('javascript:apripop()');}?>">
e in IE non apre alcun popup...
Potete aiutarmi?
Grazie, Mau

 e in IE non apre alcun popup...
error_reporting? display_errors? le sessioni funzionano? 
-- 
I am what I am, I do what I can
Do. Or do not. There is not try.

 
tutto sembra andare...
solo arrivato l'onLoad IE non si comporta a dovere...
credevo fosse un problema di virgolette...
su Firefox, come dicevo, nessun problema e il popup si apre
Mau

 solo arrivato l'onLoad IE non si comporta a dovere...
Guarda che se nel codice HTML non c'e' nulla nell'attributo OnLoad
significa che qualche cosa non e' andato a buon fine lato server.


 significa che qualche cosa non e' andato a buon fine lato server.
E' la pista che avevo seguito, ma penso che (purtroppo) il problema sia 
l'eliminazione del metodo window.open di JavaScript con XP/IE6/SP2
http://msdn.microsoft.com/workshop/author/dhtml/overview/window_restric.asp
da non credersi...
Mau

 Mau
Il link è interessante, gli ho dato un'occhiata veloce. Ma dov'è che 
dice che è stato eliminato il metodo window.open?
Tra l'altro dice "the Window restrictions feature is on by default for 
the Internet zone, and the feature is off by default for the Local 
Intranet and Trusted Sites zones"
Metti il tuo sito tra i siti attendibili (a meno che non stai lavorando 
in locale/intranet), se continua a non funzionare i problemi sono altri.
Prova magari a non settare nessuna proprietà per la finestra, in modo da 
non 'infrangere' le restrizioni.
In ogni caso ha poco senso che sia possibile rendere un
onload=""
ti converrebbe scrivere per intero l'evento solo se si verifica la 
condizione che vai testando.
Mi pare che sia scorretto quel 'javascript:'. Ciò che metti nel onload è 
per definizione codice javascript, e non è necessario specificarlo. la 
sintassi con 'javascript:' mi pare si debba usare solo nell'attributo 
'href' del tag <a>.
su i.c.l.j però dici di aprire con
<body onLoad='apripop()'>.
Anzi, il messaggio che hai scritto sul ng di javascript fa un pò a 
cazzotti con quello che hai scritto qui, dove dici che ie ti ritorna un
<body onLoad="">,
quindi sembrerebbe che la variabile di sessione della quale testi 
l'esistenza sia settata.
fai un bel print_r($_SESSION) e verifica la cosa
altra cosa: se usi xhtml i nomi degli attributi vanno scritti tutti in 
minuscolo. A volte la validazione aiuta a scoprire eventuali errori.
fa sapere se risolvi.

 condizione che vai testando.
rispetto a quanto dici qui e più giù, hai perfettamente ragione:
il fatto è che ho realizzato qualcosa come una ventina di variazioni in 
otto ore, senza riuscire a cavare un ragno dal buco. E le soluzioni 
erano talmente diverse tra loro che a quell'ora hanno cominciato a fare 
a cazzotti   :-)
Da stamane so che a quanto pare solo sulla mia macchina il popup non va
Grazie,
Mau


"We give users more control over their browsing experience in a few 
ways. First, we block most things from coming up without some user 
action; for instance, pages can no longer automatically start a download 
unless the user clicks a link or accepts the download via our new 
Information Bar UI. We also came up with a very original idea – popup 
blocking.
-->Sites can now no longer open windows except when the user clicks a 
link or button to initiate it.<--
Similarly, sites cannot change your home page without a user click as well."
http://blogs.msdn.com/ie/archive/2004/08/10/212008.aspx

 
http://blogs.msdn.com/ie/archive/2004/08/10/212008.aspx
Questo dice già di più, ed è una cosa diversa da quanto segnalato in 
precedenza. Ma questo lo fa anche firefox.
E fanno bene entrambi, devi cercare un'altra strada.

devi cercare un'altra strada.
Ne sono certo, ma "il cliente" vuole che questo popup che contiene una 
News molto importante per i suoi utenti appaia così, senza cliccare 
alcunché: figurati che faccia può fare se uno gli dice che l'utente deve 
cliccare qualcosa. Btw, faccio presente che non sono un fanatico dei 
popup, la soluzione è imposta. Forse si potrebbe risolvere agendo sulla 
visibilità di un <div>

Ma questo lo fa anche firefox.
Ma Firefox se voglio volontariamente sbloccare il popup e vederlo, me lo 
fa vedere, mentre Explorer nel mio caso fallisce l'apertura 
silenziosamente, la skippa, non blocca un popup, né segnala di aver 
bloccato alcunché.


Abilitando i cookie tutto dovrebbe risolversi...
IE6 XP con SP2 non ti fa aprire i popup, ma il codice lato server deve
pur fartelo generare!!!!
ciao

 bloccato alcunché.
Vero, IE fa schifo infatti

 popup, né segnala di aver bloccato alcunché.
È possibile essere avvisati anche da IE6.
Apri IE -> Strumenti -> Opzioni Internet... -> Privacy ->
Opzioni... -> Metti il segno di spunta su "Mostra barra
informazioni quando viene bloccato un popup."
In questo modo, se il blocco Popup entra in funzione, in alto
apparirà la barra informazioni che avverte l'utente e che
permette di scegliere cosa fare. Molto simile a quella di
Firefox 1.0.6.
Però se nel maurkup HTML proprio non compare l'attributo del
onload, significa, secondo me, che c'è un problema lato server
che impedisce la corretta produzione del codice HTML; il blocco
popup di IE non fa aprire il popup, ma non modifica l'HTML.
Con l'impostazione indicata sopra per IE, il seguente codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
">
<html>
<head>
<title>title</title>
<meta http-equiv="Content-Type" content="text/html; 
charset=iso-8859-1" />
<script language="javascript">
function apripop(){
    var newWin = window.open() 
}
</script>
</head>
<body onload="apripop();">
</body>
</html>
fa apparire la barra delle informazioni sia su IE sia su Firefox.
HTH
Ciao.
-- 
Felice Ordorisi

Ciao,
devo essermi dimenticato di dire che avevo provato anche con le 
impostazioni che mi indichi ma...
...non accade nulla, -->SIA se i dati devono arrivare dal server ed 
essere scritti al volo, -->SIA se questi dati vengono scritti 
manualmente, lasciando stare il lato PHP e scrivendo SOLO il JavaScript.
Il JS viene skippato, si carica l'ultima immagine nella pagina in cui 
c'è l'onLoad e stop. Mentre Firefox attende il caricamento e alla fine 
apre il popup.
Mau

Ho il browser impostato su "Accetta tutti i cookie"!
E, in ogni caso, tutte le altre sessioni della pagina funzionano 
benissimo, in generale, anzi, il funzionamento del PHP è egregio! Solo 
quell'onLoad subisce questo "taglio". Ti assicuro che ci siamo 
scervellati  :-(
Mau


Dimenticavo:
la situzione attuale č:
1) pura banale funzione JS presa di peso dal behavior di DreamWeaver MX;
2) richiamata nel body;
Firefox OK.
-->Explorer 6, Win XP, SP2 non va
Altre miste, IE 5 ecc.ecc., vecchi sistemi OK.
Ciao,


 scrivendo SOLO il JavaScript.
Quindi aprendo quella paginetta che ho riportato nel mio
precedente post, il tuo IE6 non segnala nulla, non si apre
nessun popup e nel markup HTML manca l'attributo dell'onload(),
giusto?
Comunque se dici che il problema si presenta anche senza usare il
PHP, allora forse il gruppo più adatto è it.comp.lang.javascript.
Ciao.
-- 
Felice Ordorisi

 PHP, allora forse il gruppo più adatto è it.comp.lang.javascript.
Sì, difatti anche lì ne stavo parlando. Avevo in un primo momento 
pensato che potessero esserci dei problemi di sintassi, poi però ho 
provato la normale funzione (che viene sì scritta nel codice questa 
volta, ma non eseguita)
Ciao e grazie
Mau