91 votes

de la fenêtre.onbeforeunload ne fonctionne pas sur l'iPad?

Personne ne sait si l' onbeforeunload événement est pris en charge sur l'iPad et/ou si il y a une autre façon de l'utiliser?

J'ai essayé un peu tout, et il semble que l' onbeforeunload événement n'est jamais déclenchée sur l'iPad (navigateur Safari).

Plus précisément, c'est ce que j'ai essayé:

  • window.onbeforeunload = function(event) { event.returnValue = 'test'; }
  • window.onbeforeunload = function(event) { return 'test'; }
  • (les deux ensemble)
  • window.onbeforeunload = function(event) { alert('test')'; }
  • (toutes les fonctions ci-dessus mais à l'intérieur, <body onbeforeunload="...">

L'ensemble de ces travaux sur le FF et Safari sur le PC, mais pas sur l'iPad.

Aussi, j'ai fait le code suivant juste après le chargement de la page:

alert('onbeforeunload' in window);
alert(typeof window.onbeforeunload);
alert(window.onbeforeunload);

Respectivement, les résultats sont les suivants:

  • true
  • object
  • null

Ainsi, le navigateur n'ont la propriété, mais pour quelque raison il ne veut pas me faire virer.

Les moyens que j'essaie de naviguer loin de la page en cliquant sur les boutons précédent et suivant, en faisant une recherche google dans la barre du haut, en changeant l'emplacement dans la barre d'adresse, et en cliquant sur un signet.

Quelqu'un a une idée sur ce qui se passe? Je serais grandement apprécier toute entrée.

Merci

20voto

Danny Armstrong Points 575

J'ai trouvé que le onunload() événement n'feu. Il a un comportement un peu étrange; tout ce que vous avez dans votre fonction de rappel attaché à l'événement est exécuté après la nouvelle page est chargée dans le fond (Vous ne pouvez pas dire qu'il est encore chargé, mais la connexion au serveur sera de montrer que c'est le cas).

Plus étrangement, si vous avez un confirm() appel dans votre onunload(), et l'utilisateur a cliqué sur un lien pour aller quelque part d'autre, vous êtes dans les affaires. Toutefois, si l'utilisateur ferme le Safari iPad onglet de navigateur, le onunload() événement se déclenche, mais votre confirm() aura un implicite annuler la réponse.

6voto

Charles Boyung Points 2025

Seulement Apple ne sais pour sûr, mais je pense qu'ils ont fait exprès de ne pas activer cette fonctionnalité dans le navigateur Safari mobile, car il est le plus souvent utilisé par des personnages louches pour vous inciter à rester sur leur site ou pop-up beaucoup de porno/fenêtres publicitaires.

3voto

Joel Mueller Points 14985

Il y a un bogue connu dans WebKit avec onbeforeunload. Je crois que c'est corrigé dans la dernière version bêta de Chrome 5, mais il est tout à fait possible que le navigateur de l'iPad est faite à partir d'une version de WebKit qui n'ont pas la corriger.

Liées Chrome rapport de bug.

1voto

Miquel Points 155

Si vous avez juste besoin de savoir si la page a été laissée de côté, vous pouvez utiliser document.unload. Il fonctionne bien dans les navigateurs ios. Si vous voyez dans la documentation d'Apple , vous trouverez qu'il est obsolète, et ils recommandent d'utiliser document.pagehide

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X