Opera: Detectando voltar, avançar, atualizar e eventos próximos

votos
2

Atualmente estou trabalhando em um plugin jQuery que rastreia um comportamento visitantes mouse. Movimentos, cliques, rolagem e redimensionamento estão todos registrados e enviados, via Ajax, para um local onde esses dados são analisados ​​e armazenados.

Originalmente, os dados são enviados para um script quando o usuário sai da página. Por 'deixa' Estou me referindo a refrescante, indo e voltando embora a história, fechando a janela / aba e ir para um endereço diferente.

A solução funciona em todos os navegadores, exceto para o Opera. Eu estou usando o evento de jQuery 'descarga', que não é suportado pelo Opera em tudo. Nem é OnBeforeUnload ou onunload.

A questão é: como faço para implementar este tipo de funcionalidades para navegadores Opera?

Uma solução que eu tinha era fazer uso especial de um recurso de 'polling' eu criei. Este recurso permite que você especifique um intervalo que empurra o conteúdo para o servidor segundos a cada 'x'. Definir este a 1 segundo especificamente para navegadores Opera provavelmente iria resolver este problema, mas é uma quantidade enorme de sobrecarga e os pedidos nem sempre são concluídas em sequência, etc ...

Todas as sugestões ou estou ficado apenas com a opção acima?

Obrigado!

Acho que eu poderia apenas ligá-lo caras à fonte plugin. http://www.thedrunkenepic.com/junk/jquery.mousalytics.js

Em relação ao código ligada acima, acrescentando:

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

Na linha 89 funciona muito bem. Minha única preocupação é em cima, então eu ainda estou procurando uma solução mais elegante.

Publicado 27/08/2009 em 05:38
fonte usuário
Em outras línguas...                            


3 respostas

votos
2

De acordo com http://bytes.com/topic/javascript/insights/799229-browser-quirk-onload-onunload-do-not-fire-back-forward-refresh-opera , Opera nunca realmente dispara onload / eventos OnUnload, então funcionalidade como este não é possível sem hacks.

http://dev.opera.com/articles/view/efficient-javascript/?page=4 parece confirmar isso, e, basicamente, afirma que a ópera tenta manter o estado da página através de pedidos.

Em ainda investgation, http://unitehowto.com/Onunload indica que ele pode ser possível com opera.io.webserver.addEventListener('_close', onunload, false);(onde AoRemoverDaMemória é uma função previamente definido), no entanto, também indica que esta funcionalidade não é consistente em todas as versões do ópera, e pode não funcionar em absoluto.

Eu acho que sua melhor opção é provavelmente usar a opção de pesquisa para o Opera, ou possivelmente usar uma verificação do lado do servidor da página atual e onde ele cai na fila história.

Respondeu 27/08/2009 em 16:46
fonte usuário

votos
1

Eu tive o mesmo problema e isso salvou meu dia:

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

Mais informações sobre este problema podem ser encontradas em: http://www.opera.com/support/kb/view/827/

Respondeu 28/02/2012 em 10:31
fonte usuário

votos
1

Será adicionando esta linha de JavaScript trabalho para você?

history.navigationMode = 'compatible';

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

Respondeu 27/08/2009 em 05:47
fonte usuário

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