Opera: Détection arrière, en avant, se rafraîchir et les événements à proximité

voix
2

Je travaille actuellement sur un plugin jQuery qui permet de suivre un comportement des visiteurs de la souris. Les mouvements, les clics, le défilement et le redimensionnement sont tous enregistrés et envoyés, via Ajax, à un endroit où ces données sont analysées et stockées.

A l'origine, les données sont envoyées à un script lorsque l'utilisateur quitte la page. Par « feuilles » Je fais référence à rafraîchir, va et vient si l'histoire, de fermer la fenêtre / onglet et aller à une autre adresse.

La solution fonctionne dans tous les navigateurs sauf pour Opera. J'utilise l'événement « unload » jQuery qui ne sont pas pris en charge par Opera du tout. Ni est OnBeforeUnload ou onunload.

La question est, comment puis-je mettre en œuvre ce type de fonctionnalité pour les navigateurs Opera?

Une solution que j'avais été d'utiliser une fonction spéciale de « bureau de vote » j'ai créé. Cette fonction vous permet de spécifier un intervalle qui pousse le contenu au serveur secondes toutes les « x ». La définition de cette 1 seconde spécifiquement pour les navigateurs Opera résoudrait probablement cette question, mais il est une quantité terrible de frais généraux et les demandes ne sont pas toujours terminé dans l'ordre, etc ...

Toute suggestion ou suis-je seulement coincé avec l'option ci-dessus?

Merci!

Je suppose que je pourrais simplement vous relier les gars à la source de plug - in. http://www.thedrunkenepic.com/junk/jquery.mousalytics.js

En ce qui concerne le code lié ci-dessus, en ajoutant:

if(window.opera)
{
options.interval = 1;
}

Sur la ligne 89 fonctionne très bien. Mon seul souci est en tête, donc je suis toujours à la recherche d'une solution plus élégante.

Créé 27/08/2009 à 05:38
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
2

Selon http://bytes.com/topic/javascript/insights/799229-browser-quirk-onload-onunload-do-not-fire-back-forward-refresh-opera , Opera n'a jamais vraiment déclenche des événements onload / onunload, donc fonctionnalité comme cela est impossible sans hacks.

http://dev.opera.com/articles/view/efficient-javascript/?page=4 semble confirmer, et affirme essentiellement que l' opéra essaie de maintenir l'état de la page dans les demandes.

Sur investgation plus loin, http://unitehowto.com/Onunload indique qu'il pourrait être possible avec opera.io.webserver.addEventListener('_close', onunload, false);(où onunload est une fonction définie précédemment), mais il indique également que cette fonctionnalité est pas uniforme dans toutes les versions de l' opéra, et pourrait ne pas fonctionner du tout.

Je pense que votre meilleure option est probablement d'utiliser l'option de vote pour Opera, ou peut-être utiliser un contrôle côté serveur pour la page en cours et où il tombe dans la file d'attente d'histoire.

Créé 27/08/2009 à 16:46
source utilisateur

voix
1

J'ai eu le même problème et cela m'a sauvé la journée:

if( typeof(opera) != 'undefined' )
{
    opera.setOverrideHistoryNavigationMode( 'compatible' );
    history.navigationMode = 'compatible';
}

Plus d' informations sur ce problème se trouve à: http://www.opera.com/support/kb/view/827/

Créé 28/02/2012 à 10:31
source utilisateur

voix
1

Ne l'ajout de cette ligne de travail JavaScript pour vous?

history.navigationMode = 'compatible';

Source: http://www.opera.com/support/kb/view/827/

Créé 27/08/2009 à 05:47
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more