Safari iPad IOS 5 fenêtre.close() de la fermeture de mal fenêtre
Nous avons une application pour iPad qui travaille sur notre ancien ipad.
Nous ouvrir les liens externes à l'aide de
var x = fenêtre.open(url)
à la fin de la journée, lorsque l'utilisateur ferme cette partie de l'application, nous passons par toutes les fenêtres qu'il ouvre et faire x.close() pour chaque et tout est okie dokie.
Essai sur le nouvel iPad avec IOS 5 et de la belle onglets,
l'ouverture de la nouvelle version de windows (bien que maintenant ils ouvrent comme des onglets) c'est bien, mais le faire x.close() ne semble pas nécessairement fermer x, il peut fermer la fenêtre de y ou z. Faire x.focus() ou y.focus() fonctionne très bien, le bon onglet est au point, mais proche semble juste de choisir ce que l'onglet qu'il veut.
Est-ce un bug ou ai-je fait quelque chose de mal? Exemple de programme:
<html>
<head></head>
<body>
<script>
//The openWindow array will hold the handles of all open child windows
var openWindow = new Array();
var win1;
var win2;
//Track open adds the new child window handle to the array.
function trackOpen(winName) {
openWindow[openWindow.length]=winName;
}
//loop over all known child windows and try to close them. No error is
//thrown if a child window(s) was already closed.
function closeWindows() {
var openCount = openWindow.length;
for(r=openCount-1;r>=0;r--) {
openWindow[r].close();
}
}
//Open a new child window and add it to the tracker.
function open1() {
win1 = window.open("http://www.yahoo.com");
trackOpen(win1);
}
//Open a different child window and add it to the tracker.
function open2() {
win2 = window.open("http://www.google.com");
trackOpen(win2);
}
//Open whatever the user enters and add it to the tracker
function open3() {
var newURL = document.getElementById("url").value;
var win3= window.open(newURL);
trackOpen(win3);
}
</script>
<input type="button" value="Open 1" onclick="open1()">
<input type="button" value="Open 2" onclick="open2()">
<input type="button" value="Focus 1" onclick="win1.focus()">
<input type="button" value="Focus 2" onclick="win2.focus()">
<input type="button" value="Close 1" onclick="win1.close()">
<input type="button" value="Close 2" onclick="win2.close()">
URL: <input type="text" id="url"> <input type="button" value="Open URL" onclick="open3()">
<input type="button" value="Close All" onclick="closeWindows()">
</body>
</html>
Non, j'ai posté quelques jours seulement avant que le code était dû. Nous avons dit au client que nous ne pouvions pas mettre en œuvre la fonctionnalité :-/ Malheureusement, le code a déjà de la fenêtre.close() dans certains endroits, et a provoqué une belle production de problème pour nous
OriginalL'auteur Lissy | 2011-11-02
Vous devez vous connecter pour publier un commentaire.
Qui a fait le tour pour moi (iPad 2 et 3; 3 avec iOS 5.1.1)
try { host.focus(); } catch(e) {}
.OriginalL'auteur dlatikay
Définir le focus sur la fenêtre avant de le fermer
OriginalL'auteur pronouncedJerry
J'ai eu le même problème. Mon code initial serait de se concentrer sur la fenêtre parent, puis à proximité de l'actuel. Cela se termine toujours de la fermeture de la mauvaise fenêtre. Ce que j'ai fait a été de retirer le
.focus
appel et ajouté un petit retard à la fenêtre.close() et il a travaillé pour moi. Source d'origine pour le retard suggestion - https://twitter.com/#!/gryzzly/statuts/177061204114685952OriginalL'auteur JohnP