Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Problem z unload, onUnload i onBeforeUnload
Kużdo
post
Post #1





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

Ostrzeżenie: (0%)
-----


Witam,

Chciałem zrobić sobie zliczanie pobytu gości(!) na stronie, którzy weszli z linka PP. Dostają oni unikalne ciasteczko i dla nich dodawane jest do części head skrypt JS, który przy unload otwiera po ajaxie połączenie do pliku php i tak zliczam czas pobytu na stronie. Problem z tym, że Chrome nie obsługuje funkcji unload() z jQuery... Nie potrafię pisać w czystym JS i mam problem jak rozwiązać to :/ W tej chwili trochę przerobiłem skrypt, ale nie działa on teraz i w Operze i w Chrome :/

  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. if($.browser.chrome) {
  4. window.onbeforeunload = function(){
  5. $.ajax({
  6. type: "POST",
  7. url: "plik.php",
  8. data: "cookie='.$_COOKIE['hash'].'"
  9. });
  10. };
  11. } else {
  12. $(window).unload(function(){
  13. $.ajax({
  14. type: "POST",
  15. url: "plik.php",
  16. data: "cookie='.$_COOKIE['hash'].'"
  17. });
  18. });
  19. }
  20. });


Może ktoś wie jak to rozwiązać? Może inny sposób zliczania pobytu?
Go to the top of the page
+Quote Post
bpskiba
post
Post #2





Grupa: Zarejestrowani
Postów: 340
Pomógł: 49
Dołączył: 3.07.2009
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


W poniższym skrypcie dostosuj ścieżki.
Według http://www.w3schools.com/jsref/event_onunload.asp powinno działać wszędzie.
  1. <script src="jquery.js"></script>
  2. <script LANGUAGE="JavaScript" TYPE="text/javascript">
  3. function f()
  4. {
  5. $.ajax({
  6. type: "POST",
  7. url: "plik.php",
  8. data: "cookie='.$_COOKIE['hash'].'"
  9. });
  10. }
  11. </head>
  12. <body onUnload="f()">
  13. treść strony
  14. </body></html>
Go to the top of the page
+Quote Post
Niktoś
post
Post #3





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Nie powinno być
[JAVASCRIPT] pobierz, plaintext
  1. data: "cookie="+<?php '.$_COOKIE['hash'].' ?>
[JAVASCRIPT] pobierz, plaintext

zamiast:
[JAVASCRIPT] pobierz, plaintext
  1. data: "cookie='.$_COOKIE['hash'].'"
[JAVASCRIPT] pobierz, plaintext


Mam pewne wątpliwości ,czy w taki sposób jaki zaprezentowałeś, można mieszać dane.Blok JS to nie blok PHP, więc jeśli się nie mylę to $_COOKIE['hash'] będzie błędnie interpretowany w skrypcie js .
Go to the top of the page
+Quote Post
Kużdo
post
Post #4





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

Ostrzeżenie: (0%)
-----


Tak jak napisałem, część ta jest dodawana przez skrypt tylko dla wybranych osób. Więc zmienna z PHP jest tutaj wrzucana i dopiero leci do usera dokument, już z normalną wartością.

Co do skryptu: niestety, ale i Opera i Chrome opierają się temu.

Ten post edytował Kużdo 30.08.2012, 20:18:36
Go to the top of the page
+Quote Post
-satanek-
post
Post #5





Goście







Spróbuj dla chrome/opery ustawić typ zapytania na synchroniczny:

Kod
if($.browser.chrome) {
            window.onbeforeunload = function(){
                $.ajax({
                    type: "POST",
                    async: false,
                    url: "plik.php",
                    data: "cookie='.$_COOKIE['hash'].'"
                });
            };
        }


Nie testowane, ale istnieje szansa że zadziała (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 21:48