C'e` qualche problema nella logica dello script, che pero` non dovrebbe influire sul funzionamento.
Ad esempio la variabile popup_aperta non viene mai messa a true.
Comunque la riga
if (window.focus) {newwindow.focus()}
puoi scriverla semplicemente come
newwindow.focus();
(non serve testare se ilfocus e` sula fienstra corrente; potrebbe anche essere su qualcos'altro).
Pero` se il browser ti impedisce l'apertura della popup, quello che succede e` che tenti di dare il focus ad una stringa, quindi devi inserire un controllo se la fienstra esiste prima di darle il focus.
Io farei cosi`:
codice:
var newwindow = "";
function check_aperta() {
if (typeOf(newwindow)=='object' && !newwindow.closed) {
alert("la popup e` stata aperta");
} else {
alert ("la popup non e` stata aperta");
}
}
function popitup(url) {
if (!newwindow.closed && newwindow.location) {
newwindow.location.href = url;
} else {
newwindow=window. open(url,'chat','height=200,width=150');
//setTimeout('check_aperta()', 1000);
}
if (typeOf(newwindow)=='object' && !newwindow.closed) {
newwindow.focus()
}
return false;
}
Ho qualche dubbio su cosa ritorna il typeOf di una finestra quando e` stata aperta. Eventualmente aggiungi un
alert("tipo = " + typeOf(newwindow));
prima del test, per verificarlo.