Opera: Detekce zpět, vpřed, osvěžit a zavřít události

hlasů
2

Jsem v současné době pracuje na jQuery plugin, který sleduje chování si návštěvníci myši. Pohyby, kliknutí, rolování a změna velikosti jsou zaznamenány a poslal přes Ajax, na místo, kde se tato data analyzován a uložen.

Původně jsou data odeslána do skriptu, když uživatel opustí stránku. By ‚listy‘ Mluvím o osvěžující, jít tam a zpět i když historie, zavření / kartu okna a jít jinam.

Řešení funguje ve všech prohlížečích KROMĚ k opeře. Já používám jQuery je ‚vysouvání‘ událost, která není podporována opery vůbec. Ani se onbeforeunload nebo onunload.

Otázkou je, jak mohu implementovat tento druh funkcionality pro Opera prohlížečů?

Jedním z řešení, které jsem měl, bylo, aby se zvláštní použití ‚volební‘ funkce jsem vytvořil. Tato funkce umožňuje zadat interval, který tlačí obsah na server každých ‚X‘ sekund. Nastavení na 1 sekundu speciálně pro Opera prohlížečů bude pravděpodobně tento problém vyřešit, ale je to strašné množství nad hlavou a požadavky nejsou vždy dokončen v pořadí, atd ...

Jakékoli návrhy nebo jsem jen uvízl s výše uvedenou možností?

Dík!

Myslím, že můžu vám jen odkaz kluci ke zdroji zásuvných modulů. http://www.thedrunkenepic.com/junk/jquery.mousalytics.js

Pokud jde o spojen kód výše, a dodává:

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

Na řádku 89 funguje skvěle. Mou jedinou starostí je nad hlavou, tak jsem stále hledá více elegantní řešení.

Položena 27/08/2009 v 05:38
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
2

Podle http://bytes.com/topic/javascript/insights/799229-browser-quirk-onload-onunload-do-not-fire-back-forward-refresh-opera , Opera nikdy požáry onload / onunload události, takže funkčnost takhle není možné bez hacků.

http://dev.opera.com/articles/view/efficient-javascript/?page=4 Zdá se, že potvrdit, a v podstatě uvádí, že opera se snaží udržet stav stránky přes požadavky.

Při dalším investgation, http://unitehowto.com/Onunload naznačuje, že by mohlo být možné opera.io.webserver.addEventListener('_close', onunload, false);(kde onunload je předem definované funkce), ale to také znamená, že tato funkce není konzistentní ve všech verzích opery, a nemusí pracovat vůbec.

Myslím, že nejlepší volbou je zřejmě použít možnost dotazování na opeře, případně použít šek na straně serveru pro aktuální stránku a kam spadá do fronty historie.

Odpovězeno 27/08/2009 v 16:46
zdroj uživatelem

hlasů
1

Měl jsem stejný problém, a to zachránil můj den:

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

Více informací o tomto problému lze nalézt na adrese: http://www.opera.com/support/kb/view/827/

Odpovězeno 28/02/2012 v 10:31
zdroj uživatelem

hlasů
1

Má přidání tento řádek JavaScriptu práce pro vás?

history.navigationMode = 'compatible';

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

Odpovězeno 27/08/2009 v 05:47
zdroj uživatelem

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