Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem jQuery pod FF
#1
Witam.
Ostatnio zostałem poproszony o pomoc na pewnej stronie robionej przez innego programistę. Po wykonaniu zlecenia właściciel poprosił mnie, żebym sprawdził jedną rzecz, a mianowicie na stronie http://warzno.pl/index.php/dzialki jest mapka, gdzie wolne działki powinny być oznaczone na zielono, a po najechaniu zielony powinien się rozjaśniać. Problem w tym, że sprawnie działa to tylko na Chromie. Natomiast na Firefoxie początkowe zielone pola widać tylko przy pierwszym ładowaniu strony lub po ctrl+f5. Wszystko inne jest ok. Wydaje mi się, że problem siedzi w tym, że skrypt zaczyna działać w momencie gdy od nowa ładowana jest mapa. Poniżej zamieszczam kod, który jest odpowiedzialny za wyświetlanie punktów na mapie.

Kod PHP:
jQuery(document).ready(function(){

      if(!
jQuery('#map2').length){

         return;

      }

      
jQuery('#cord_map').maphilight({ strokefalsefillColor'00ff00'fillOpacity1neverOntrue });

      
      for(var 
0active.lengtha++){

         (function(
a){

            var 
cord jQuery('#map_cord_' active[a]);
            
            
cord.data('maphilight', { fillColor'00d700'stroketruestrokeColor'ffffff'strokeOpacity1strokeWidth1fillOpacity0.8neverOnfalsealwaysOntrue }); // tu dodawane są zielone pola

            
cord.on({ 

               
'mouseover': function(e){
                    
                  
cord.data('maphilight', { fillColor'ffffff'stroketruestrokeColor'ffffff'strokeOpacity1strokeWidth1,fillOpacity0.4neverOnfalse }); // tu dodawane jest rozjaśnienie
                  
tip_active(active[a]);

               }, 
'mouseout': function(e){

                  
tip_deactive(active[a]);

               }

            });
            
            
jQuery('#map_txt_' active[a] + ', #map_house_' active[a]).on({

               
'mouseover': function(e){

                  
cord.mouseover(); 

                  
tip_active(active[a]);

               }, 
'mouseout': function(e){ 

                  
cord.mouseout(); 

                  
tip_deactive(active[a]);

               }, 
'click': function(){

                  
jQuery('#map_cord_' active[a]).trigger('click');

               }

            });

         })(
a);

      } 

Opisałem w nim 2 miejsca, które są odpowiedzialne za wyświetlanie się pól. Ktoś ma jakiś pomysł jak temu zaradzić?
Odpowiedz
#2
Spróbuj tak:
- .on zamień na .live
- 'mouseover' na 'mouseenter'
'mouseout' na 'mouseleave'

On niby ma działać "podobnie" jak live ale często gęsto coś się z nim dziwnego dzieje.
Odpowiedz
#3
@Kartofelek, zmienione, ale problemu nie rozwiązało Sad
Teraz dla zmyłki jest zielone tło, bo właściciel zażyczył sobie podmiany, ale w chormie widocznie widać że mapy wychodzą ponad linie ulic.

EDYTKA
Wszystko wygląda tak, jak gdyby Firefox potrzebował pełnego przeładowania strony (w tym obrazka) by pełen skrypt zadziałał poprawnie.
Odpowiedz
#4
Jakieś inne pomysły?
Odpowiedz
#5
Ja jedyny błąd jaki spotykałem to ten spowodowany nie podawaniem atrybutów width i height dla obrazków. Wtedy chrome wali wyliczanie wielkości.
Odpowiedz
#6
Może przydatne będzie to, że nakreślę trochę jak działa skrypt i co zaobserwowałem.

Kod PHP:
jQuery('#cord_map').maphilight({ strokefalsefillColor'00ff00'fillOpacity1neverOntrue }); 

Ten kod, gdy zamienimy neverOn: true na alwaysOn: true spowoduje, że na wszystkie elementy area na mapie zostanie nałożony kolor. I to działa super i idąc dalej

Kod PHP:
cord.data('maphilight', { fillColor'00d700'stroketruestrokeColor'ffffff'strokeOpacity1strokeWidth1fillOpacity0.8neverOnfalsealwaysOntrue }); 

ten kod umieszczony w pętli i przypisany do danego pola area powinien mu nakładać kolor i tak się dzieje, jednak tylko w momencie gdy odświeżywszy stronę w Firefoxie za pomocą ctrl+f5. Przy kolejnych odświeżeniach z użyciem f5 kolory na polach znikają. W chromie wszystko działa bez zarzutu. Wygląda mi to na to, że wszystko działa w momencie gdy odświeżamy całą stronę, łącznie z grafikami. Obejście cache za pomocą PHP też za wiele nie pomogło.
Odpowiedz
#7
No to może odpal ten skrypt po onload dla tego obrazka?
Odpowiedz
#8
Cholera brnąłem na ślepo w to jQuery a zwykły JS załatwił sprawę! Dzięki mój superbohaterze!
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
Sad HTML/CSS/JQUERY - Potrzebuje pomocy / Bezradność jokerblitzz 10 10,230 28-04-2016, 00:24
Ostatni post: mubi
  jquery? mordrag 0 2,339 29-03-2015, 17:44
Ostatni post: mordrag
  aby funkcja JQuery zadzialala po okreslonym czasie Arnimarl 2 3,825 25-05-2014, 07:38
Ostatni post: Arnimarl
  Konflikt Mootools/Jquery kurde 2 3,249 31-10-2013, 01:44
Ostatni post: kornell
  Slider z jQuery lomek 2 3,769 19-10-2013, 04:40
Ostatni post: lomek

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl