• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

IE - prawdziwe piekło, czyli js u bram hadesu

VPS Starter Arubacloud
0 głosów
616 wizyt
pytanie zadane 10 lutego 2019 w JavaScript przez program naczelny Gaduła (3,320 p.)
edycja 10 lutego 2019 przez program naczelny

Witam serdecznie!

Wychodzę naprzeciw z problemem skompilowania strony pod względem każdej przeglądarki, chrome, firefox działa, napotykam IE i strona niestety nawala! Znalazłem problem - skrypt który po kliknięciu na ikonę menu ma otworzyć opcje (pobiera klasę i display: block / display: none) nie działa w IE 11 zdaje się. Podam 2 funkcje (jedna z jquery) których próbowałem użyć - nic z tego, może ktoś kiedyś napotkał ten problem i będzie wstanie "poprawić" kod pod Internet Explorer ;) 

Wytypowałem że może nie działać funkcja forEach,  [...   ], document.querySelectorAll(".link");

function Functionty() {                                                     /*first function*/
var elements = document.querySelectorAll(".link");
  
   elements.forEach(function(element) {
    if (element.style.display === "block") {
      element.style.display = "none";
	
	  } 
	else {
      element.style.display = "block";

    }
  });
  
}

      
function Functionty() {                                                  /*second function*/
  var x = [ ...document.getElementsByClassName('link') ];
   
  x.forEach(function(element) {
    if (element.style.display === "block") {
      element.style.display = "none";
	  element.style.marginTop = "0px";
	  element.style.marginBottom = "0px";
	  
    } else {
      element.style.display = "block";
	  element.style.marginTop = "0px";
	  element.style.marginBottom = "0px";
    }
  })
  
};

 

komentarz 10 lutego 2019 przez Tomek Sochacki Ekspert (227,510 p.)
serio schodzisz aż do IE9? wersja 11 to rozumiem bo korzysta z niej ~2% userow ale niższe to chyba można sobie darować? Rozumiem, że to pewnie decyzja biznesu o wsparciu tych środowisk ale może warto to przedyskutować i przeanalizować statystyki czy naprawdę koszt takiego developmentu jest tego warty?
komentarz 10 lutego 2019 przez program naczelny Gaduła (3,320 p.)
Pomyliłem się mam 11, więc przydało by się to ogarnąć
komentarz 10 lutego 2019 przez pablop76 VIP (123,060 p.)

@program naczelny,

rest

komentarz 10 lutego 2019 przez program naczelny Gaduła (3,320 p.)

@program naczelny,  problem rozwiązałem w inny sposób używając !important, ale jeszcze nie zamykam ponieważ mimo wszystko chciałbym wiedzieć co w tym przypadku można zrobić

komentarz 10 lutego 2019 przez ScriptyChris Mędrzec (190,190 p.)
edycja 10 lutego 2019 przez ScriptyChris

Wytypowałem że może nie działać

Yyy, przecież jeśli coś nie działa od strony JSa, to w konsoli powinien być odpowiedni błąd, który powinieneś przeanalizować i dopiero wtedy naprawić przyczynę. "Typowanie" może pomóc, ale nie powinno się naprawiać problemów w kodzie na wyczucie, bo nie ma się pewności, że były one źródłem błędów. :)

Co do funkcji, które wytypowałeś jako problematyczne dla IE - możesz je polyfillować.

problem rozwiązałem w inny sposób używając !important

Użycie !important w CSS to ostateczność. 

komentarz 10 lutego 2019 przez program naczelny Gaduła (3,320 p.)
W tym problem że żadnego błędu ani nawet ostrzeżenia nie było :)

Taki to jest ten IE
komentarz 10 lutego 2019 przez ScriptyChris Mędrzec (190,190 p.)
Debugowałeś kod? Jeśli cały kod JavaScriptu wykonuje się prawidłowo, to problem może tkwić w CSS. Upewnij się, że po stronie skryptu wszystko jest ok.
komentarz 10 lutego 2019 przez program naczelny Gaduła (3,320 p.)

jednak zaczęło wyświetlać błąd, było to jak przypuszczałem forEach. Polyfillowanie jak @JSHolic napisał to słuszne rozwiązanie, ale załóżmy że strona jest w wersi beta ( !important i inne półśrodki ), później się załatwi.

komentarz 10 lutego 2019 przez Tomek Sochacki Ekspert (227,510 p.)
jeśli masz wspierać takie starsze środowiska to w sumie nie tylko IE może być problemem, ale też np. safari. Ja bym pomyślał nad transpilacją kodu do ES5, ewentualnie jakiś test sprawdzający np. czy są moduły i arrow function, jeśli tak to serwuj ES6, jeśli nie to ES5.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
1 odpowiedź 280 wizyt
0 głosów
1 odpowiedź 125 wizyt
pytanie zadane 2 sierpnia 2018 w JavaScript przez MrxCI Dyskutant (8,260 p.)
0 głosów
2 odpowiedzi 199 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...