Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z działaniem strony pod IE
Forum PHP.pl > Forum > Przedszkole
zbychoooo
Witam serdecznie,
Mam problem z działaniem skryptu JQuery pod przeglądarką Internet Explorer.
Aby zobrazować o co mi chodzi, przygotowałem testową stronę internetową pod adresem: http://www.zbyszko.net15.pl/test1

Problem polega na tym, że w IE po kliknięciu linków wewnątrz jakieś podstrony (div-a) np. Podstrony 1, gdzie są linki do Strony głównej i Podstrony3, IE nie przechodzi pod podane wskazanie. Z poziomu menu robi to bez problemu. W innych przeglądarkach: Firefox, Chrome czy Opera, problem w ogóle nie ma miejsca i wszystko działa bez zarzutu.

Podaje link jeszcze do źródeł strony: http://www.zbyszko.net15.pl/test1.rar
tehaha
nie czytałem kodu ale od razu widzę, że coś namieszałeś, zaopatrz się w dodatek firebug dla firefoxa to zobaczysz, że po każdym kliknięciu wykonujesz 2 identycznie połączenia np.

GET http://www.zbyszko.net15.pl/test1/loader.p...e=%23Podstrona2
GET http://www.zbyszko.net15.pl/test1/loader.p...e=%23Podstrona2

powinno być tylko jedno, po drugie w parametsze page przekazujesz znak #, który jak widzisz jest przesyłany jako %23 i domyślam się, że to może sprawiać te kłopoty
zbychoooo
Cytat(tehaha @ 30.10.2010, 15:21:13 ) *
nie czytałem kodu ale od razu widzę, że coś namieszałeś, zaopatrz się w dodatek firebug dla firefoxa to zobaczysz, że po każdym kliknięciu wykonujesz 2 identycznie połączenia np.

GET http://www.zbyszko.net15.pl/test1/loader.p...e=%23Podstrona2
GET http://www.zbyszko.net15.pl/test1/loader.p...e=%23Podstrona2

powinno być tylko jedno, po drugie w parametsze page przekazujesz znak #, który jak widzisz jest przesyłany jako %23 i domyślam się, że to może sprawiać te kłopoty


Poprawiłem już pierwszy błąd.
Zastanawia mnie jednak ze w IE linki z lewego menu ładują się bez problemu, natomiast te wewnątrz podstrony już nie. Nie wydaje mi się żeby problem był ze znakiem #
  1. jQuery(document).ready(function () {
  2.  
  3. getPage();
  4. jQuery.history.init(pageload);
  5.  
  6. jQuery('a[href=' + window.location.hash + ']').addClass('selected');
  7.  
  8. jQuery('a[rel=ajax]').click(function () {
  9.  
  10. var hash = this.href;
  11. hash = hash.replace(/^.*#/, '');
  12. jQuery.history.load(hash);
  13.  
  14. jQuery('a[rel=ajax]').removeClass('selected');
  15. jQuery(this).addClass('selected');
  16. jQuery('div#content').hide();
  17. //jQuery('.loading').show();
  18.  
  19. //getPage();
  20.  
  21. return false;
  22. });
  23. });
  24.  
  25. function pageload(hash) {
  26. if (hash) getPage();
  27. }
  28.  
  29. function getPage() {
  30.  
  31. if (document.location.hash=='') var data = 'page=' + encodeURIComponent('#Index');
  32. else var data = 'page=' + encodeURIComponent(document.location.hash);
  33.  
  34. jQuery.ajax({
  35. url: "loader.php",
  36. type: "GET",
  37. data: data,
  38. cache: false,
  39. success: function (html) {
  40. //jQuery('.loading').hide();
  41. jQuery('div#content').html(html);
  42. jQuery('div#content').fadeIn('slow');
  43. jQuery('div#content').show();
  44.  
  45. }
  46. });
  47. }

tehaha
właściwie to w ogóle dziwne że w FF działa, ponieważ zdarzenie click jest przypisane do linków z atrybutem rel=ajax, ponadto jeżeli chcesz, żeby były obsługiwane zdarzenia dla linków,które są ładowane później to trzeba by użyć funkcji live http://api.jquery.com/live/
zbychoooo
Problem udało mi się rozwiązać, pomogła dodana na koniec linijka:
  1. setInterval("getPage()",1000);


@tehaha: Dziękuję za cenne wskazówki smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.