No. Senza un riferimento alla finestra, non è possibile trovarlo di nuovo, per nome o in altro modo. Non c'è raccolta di finestre.
UPDATE: Ecco come si potrebbe fare da soli:
var windows = {};
function openWindow(url, name, features) {
windows[name] = window.open(url, name, features);
return windows[name];
}
Ora, openWindow
sarà sempre aprire la finestra, e se la finestra esiste già, caricherà l'URL dato in quella finestra e ritorno un riferimento a quella finestra. Ora è possibile anche implementare findWindow
:
function findWindow(name) {
return windows[name];
}
che restituirà alla finestra se esiste, o undefined
.
Si dovrebbe anche avere closeWindow
, in modo da non tenere i riferimenti a Windows che voi stessi Iniziato:
function closeWindow(name) {
var window = windows[name];
if(window) {
window.close();
delete windows[name];
}
}
Se non è possibile, qual è il punto di dare nomi delle finestre?
Il nome viene utilizzato internamente dal browser per gestire Windows. Se chiami window.open
con lo stesso nome, non aprirà una nuova finestra, ma invece caricherà l'URL nella finestra precedentemente aperta. Ci sono un paio di cose, da MDN window.open():
Se una finestra con il nome strWindowName esiste già, allora strURL viene caricato nella finestra esistente. In questo caso il valore di ritorno del metodo è la finestra esistente e strWindowFeatures viene ignorato. Fornire una stringa vuota per strUrl è un modo per ottenere un riferimento a una finestra aperta con il suo nome senza cambiare la posizione della finestra. Per aprire una nuova finestra su ogni chiamata di window.open(), usa il valore speciale _blank per strWindowName.
buona spiegazione e work-around. Grazie! –
Può andare bene per Windows ma non funziona sul mio sistema linux ... non so se sia un riferimento a Microsoft Windows o no, ma a volte quello che succede sulla mia macchina Linux avviene anche sui Mac ... – CrandellWS
A partire da Google Chrome 41, questo metodo ha un effetto collaterale negativo: ogni volta che si esegue window.open(), la finestra già aperta avrà lo stato attivo. Non c'è attualmente alcuna soluzione che possa trovare per prevenire questo comportamento, che mi sta dando grattacapi. Voglio solo avere un riferimento a quella finestra, non voglio che si concentri. chiamare window.open() con url vuoto non funziona. – schlingel