Opracowałem kilka ulepszonych stron javascript, które działają dobrze na najnowszych przeglądarkach Firefox i Safari. Brakowało mi sprawdzenia w Internet Explorerze, a teraz stwierdzam, że strony nie działają w IE 6 i 7 (jak dotąd). Skrypty w jakiś sposób nie są wykonywane, strony wyświetlają się tak, jakby nie było javascript, chociaż niektóre javascript są wykonywane. Używam własnych bibliotek z manipulacją domem, od YUI 2 używam YUI-Loader i XML-Http-Request, a na jednej stronie używam "psupload", który zależy od JQuery.
Instaluję program Microsoft Script Editor z pakietu Office XP i będę teraz debugować. Napiszę teraz również konkretne testy.
Jakie są typowe awarie IE? W jakim kierunku mogę mieć otwarte oczy.
Znalazłem tę stronę, na której widać pewne różnice. wizyta: Quirksmode
Czy możesz na podstawie swojego doświadczenia wymienić kilka typowych rzeczy, na które powinienem zwrócić uwagę?
Później zadam tutaj więcej pytań dotyczących konkretnych zadań, ale na razie interesuje mnie twoje doświadczenie, dlaczego IE zwykle zawodzi w skryptach, które działają dobrze w Firefoksie
Edycja: Dziękuję za wszystkie świetne odpowiedzi!
W międzyczasie dostosowałem cały kod tak, aby działał również z Internet Explorerem. Zintegowałem jQuery i zbudowałem teraz na nim własne klasy. To był mój podstawowy błąd, że nie zbudowałem wszystkich swoich rzeczy na jQuery od początku. Teraz mam.
Bardzo pomogło mi też JSLint.
Pomogło też wiele pojedynczych problemów z różnych odpowiedzi.
źródło
Odpowiedzi:
Prosimy o zaktualizowanie tej listy, jeśli zauważysz jakiekolwiek błędy / pominięcia itp.
Uwaga: IE9 rozwiązuje wiele z poniższych problemów, więc wiele z nich dotyczy tylko IE8 i starszych oraz do pewnego stopnia IE9 w trybie dziwactw. Na przykład, IE9 obsługuje SVG,
<canvas>
,<audio>
i<video>
natywnie, jednak należy włączyć tryb zgodności ze standardami dla nich dostępne.Generał:
Problemy z częściowo załadowanymi dokumentami: dobrym pomysłem jest dodanie JavaScript w
window.onload
lub podobnym wydarzeniu, ponieważ IE nie obsługuje wielu operacji w częściowo załadowanych dokumentach.Różne atrybuty : w CSS jest to
elm.style.styleFloat
w IE ielm.style.cssFloat
Firefox. W<label>
tagachfor
atrybut jest dostępny za pomocąelm.htmlFor
w IE vselm.for
w Firefox. Zauważ, żefor
jest to zastrzeżone w IE, więcelm['for']
prawdopodobnie lepszym pomysłem jest powstrzymanie IE przed zgłaszaniem wyjątku.Podstawowy język JavaScript:
Dostęp do znaków w ciągach :
'string'[0]
nie jest obsługiwany w przeglądarce IE, ponieważ nie jest objęty oryginalnymi specyfikacjami JavaScript. Użyj'string'.charAt(0)
lub'string'.split('')[0]
zauważ, że dostęp do elementów w tablicach jest znacznie szybszy niż używaniecharAt
z ciągami znaków w IE (chociaż jest pewien początkowy narzut podczassplit
pierwszego wywołania).Przecinki przed końcem obiektów: np.
{'foo': 'bar',}
Nie są dozwolone w IE.Problemy specyficzne dla elementu:
Pobieranie
document
ramek iFrame :IFrame.contentDocument
(IE zaczął obsługiwać to od wersji 8 ).IFrame.contentWindow.document
IFrame.contentWindow
odnosi się dowindow
w obu przeglądarkach).Canvas: wersje IE przed IE9 nie obsługują tego
<canvas>
elementu. IE obsługuje jednak VML, który jest podobną technologią, a explorercanvas może dostarczać miejscowe opakowanie<canvas>
elementów dla wielu operacji. Należy pamiętać, że IE8 w trybie zgodności ze standardami jest wielokrotnie wolniejszy i ma o wiele więcej błędów niż w trybie dziwactw podczas korzystania z VML.SVG: IE9 natywnie obsługuje SVG. IE6-8 może obsługiwać SVG, ale tylko z zewnętrznymi wtyczkami, z których tylko niektóre obsługują manipulację JavaScript.
<audio>
i<video>
: są obsługiwane tylko w przeglądarce IE9.Dynamiczne tworzenie przycisków radiowych: IE <8 ma błąd, który sprawia, że przyciski radiowe utworzone z
document.createElement
zaznaczeniem nie są możliwe. Zobacz także Jak dynamicznie utworzyć przycisk opcji w Javascript, który działa we wszystkich przeglądarkach? jak to obejść.Osadzony JavaScript w
<a href>
tagach ionbeforeunload
konfliktach w IE: Jeśli whref
częścia
tagu jest osadzony JavaScript (np.<a href="javascript: doStuff()">
IE zawsze pokaże wiadomość zwróconą z,onbeforeunload
chyba żeonbeforeunload
moduł obsługi zostanie wcześniej usunięty. Zobacz także Pytaj o potwierdzenie przy zamykaniu karty .<script>
różnice w zdarzeniach tagów:onsuccess
ionerror
nie są obsługiwane w IE i są zastępowane przez specyficzne dla IE,onreadystatechange
które są uruchamiane niezależnie od tego, czy pobieranie zakończyło się powodzeniem, czy niepowodzeniem. Zobacz także JavaScript Madness, aby uzyskać więcej informacji.Rozmiar / pozycja / przewijanie i pozycja myszy:
Pobieranie rozmiaru / pozycji elementu : szerokość / wysokość elementów jest czasami
elm.style.pixelHeight/Width
raczej w IE niżelm.offsetHeight/Width
, ale żaden nie jest wiarygodny w IE, szczególnie w trybie dziwactw, a czasami jeden daje lepszy wynik niż drugi.elm.offsetTop
ielm.offsetLeft
często są nieprawidłowo zgłaszane, co prowadzi do znalezienia niepoprawnych pozycji elementów, dlatego w wielu przypadkach elementy wyskakujące itp. są oddalone o kilka pikseli.Zauważ również, że jeśli element (lub element nadrzędny elementu) ma
display
of,none
to IE zgłosi wyjątek podczas uzyskiwania dostępu do atrybutów rozmiaru / pozycji, zamiast zwracać,0
jak robi to Firefox.Uzyskaj rozmiar ekranu (Uzyskiwanie widocznego obszaru ekranu):
window.innerWidth/innerHeight
document.documentElement.clientWidth/clientHeight
document.body.clientWidth/clientHeight
Pozycja przewijania dokumentu / pozycja myszy : W rzeczywistości ta pozycja nie jest zdefiniowana przez w3c, więc jest niestandardowa nawet w Firefoksie. Aby znaleźć
scrollLeft
/scrollTop
zdocument
:document.body.scrollLeft/scrollTop
document.documentElement.scrollLeft/scrollTop
UWAGA: Niektóre inne przeglądarki również używają
pageXOffset
/pageYOffset
.Aby uzyskać pozycję kursora myszy,
evt.clientX
aevt.clientY
namousemove
imprezach da stanowisko w stosunku do dokumentu bez dodawania pozycji przewijania tak poprzednia funkcja musi być włączona:Wybór / zakresy:
<textarea>
i<input>
selekcje :selectionStart
iselectionEnd
nie są zaimplementowane w IE, a zamiast tego istnieje zastrzeżony system „zakresów”, zobacz także pozycję Caret w obszarze tekstowym, w znakach od początku .Pobieranie aktualnie zaznaczonego tekstu w dokumencie:
window.getSelection().toString()
document.selection.createRange().text
Pobieranie elementów według identyfikatora:
document.getElementById
może również odnosić się doname
atrybutu w formularzach (w zależności od tego, który jest zdefiniowany jako pierwszy w dokumencie), więc najlepiej nie używać różnych elementów, które mają takie samename
iid
. To sięga czasów, kiedyid
nie był standardem w3c.document.all
( Zastrzeżona własnością IE-specyficzna ) jest znacznie szybsze niżdocument.getElementById
, ale ma inne problemy, jak to zawsze priorytetname
przedid
. Osobiście używam tego kodu, wycofując się z dodatkowymi kontrolami, aby się upewnić:Problemy z wewnętrznym kodem HTML tylko do odczytu:
IE ma nie obsługiwać ustawienie innerHTML z
col
,colGroup
,frameSet
,html
,head
,style
,table
,tBody
,tFoot
,tHead
,title
, itr
elementy. Oto funkcja, która działa wokół tego dla elementów związanych z tabelami:Należy również pamiętać, że IE wymaga dodania a
<tbody>
do a<table>
przed dołączeniem<tr>
s do tego<tbody>
elementu podczas tworzeniadocument.createElement
, na przykład:Różnice w wydarzeniach:
Pobieranie
event
zmiennej: zdarzenia DOM nie są przekazywane do funkcji w IE i są dostępne jakowindow.event
. Jednym z powszechnych sposobów uzyskania zdarzenia jest użycie np.elm.onmouseover = function(evt) {evt = evt||window.event}
Wartości domyślnej
window.event
ifevt
jest niezdefiniowane.Kluczowe różnice w kodach zdarzeń: Kody kluczowych zdarzeń są bardzo różne, ale jeśli spojrzysz na Quirksmode lub JavaScript Madness , nie jest to specyficzne dla IE, Safari i Opera znowu się różnią.
Mysz różnice zdarzeń:
button
atrybut w IE jest bit-flaga, która pozwala wielu przycisków myszy na raz:var isLeft = evt.button & 1
)var isRight = evt.button & 2
)Środek: 4 (
var isCenter = evt.button & 4
)Model W3C (obsługiwany przez przeglądarkę Firefox) jest mniej elastyczny niż model IE, z dozwolonym tylko jednym przyciskiem naraz z lewej jako
0
, z prawej strony2
i ze środka jako1
. Zauważ, że, jak wspomina Peter-Paul Koch , jest to bardzo sprzeczne z intuicją, ponieważ0
zwykle oznacza „brak przycisku”.offsetX
ioffsetY
są problematyczne i prawdopodobnie najlepiej jest ich unikać w IE. Bardziej niezawodnym sposobem uzyskaniaoffsetX
ioffsetY
w IE byłoby uzyskanie pozycji względnie pozycjonowanego elementu i odjęcie go odclientX
iclientY
.Zwróć również uwagę, że w IE, aby uzyskać podwójne kliknięcie w
click
zdarzeniu, musisz zarejestrować zarówno a, jakclick
idblclick
zdarzenie w funkcji. Firefox uruchamia sięclick
tak samo, jakdblclick
po dwukrotnym kliknięciu, więc do tego samego zachowania potrzebne jest wykrywanie specyficzne dla IE.Różnice w przypadku przenoszenia modelu: Zarówno zastrzeżonych IE model i model obsługi zdarzeń support Firefox z dołu do góry, na przykład, jeśli istnieją wydarzenia w obu elementów
<div><span></span></div>
ówczesnych wydarzeń wywoła wspan
czym siędiv
raczej niż kolejność którym są związane, jeśli zastosowano tradycyjny npelm.onclick = function(evt) {}
.„Capture” wydarzenia są zazwyczaj obsługiwane tylko w Firefoksie etc, który wywoła
div
wtedyspan
zdarzenia w górę w dół kolejności. IE maelm.setCapture()
ielm.releaseCapture()
do przekierowywania zdarzeń myszy z dokumentu do elementu (elm
w tym przypadku) przed przetworzeniem innych zdarzeń, ale mają one szereg problemów z wydajnością i innymi problemami, więc prawdopodobnie należy ich unikać.Firefox:
Dołącz :
elm.addEventListener(type, listener, useCapture [true/false])
odłącz :
elm.removeEventListener(type, listener, useCapture)
(
type
np.'mouseover'
Bezon
)IE: W IE można dodać tylko jedno zdarzenie danego typu na elemencie - wyjątek jest zgłaszany w przypadku dodania więcej niż jednego zdarzenia tego samego typu. Zwróć również uwagę, że w funkcjach zdarzeń
this
odwołuje sięwindow
raczej do elementu powiązanego (jest więc mniej przydatne):Dołącz :
elm.attachEvent(sEvent, fpNotify)
odłącz :
elm.detachEvent(sEvent, fpNotify)
(
sEvent
np.'onmouseover'
)Różnice w atrybutach zdarzeń:
Zatrzymaj przetwarzanie zdarzeń przez inne funkcje nasłuchujące :
Firefox:
evt.stopPropagation()
IE:
evt.cancelBubble = true
Zatrzymaj np. Kluczowe zdarzenia przed wstawianiem znaków lub zatrzymaniem zaznaczania pól wyboru:
Firefox:
evt.preventDefault()
IE:
evt.returnValue = false
Uwaga: Tylko powrocie
false
wkeydown
,keypress
,mousedown
,mouseup
,click
areset
także zapobiec domyślne.Pobierz element, który wywołał zdarzenie:
Firefox:
evt.target
IE:
evt.srcElement
Pobranie elementu, z którego odsunął się kursor myszy:
evt.fromElement
w IE jestevt.target
w przeglądarce Firefox, jeśli jest wonmouseout
zdarzeniu, w przeciwnym razieevt.relatedTarget
Pobranie elementu, do którego został przeniesiony kursor myszy:
evt.toElement
w IE jestevt.relatedTarget
w przeglądarce Firefox, jeśli jest wonmouseout
zdarzeniu, w przeciwnym razieevt.target
Uwaga:
evt.currentTarget
(element, do którego było przypisane zdarzenie) nie ma odpowiednika w IE.źródło
Sprawdź również, czy w kodzie nie ma przecinków, takich jak te lub podobne
ostatni przecinek (następujący po wartości 2) będzie tolerowany przez przeglądarkę Firefox, ale nie przez IE
źródło
Jeśli będziesz używać jQuery lub YUI, gdy Twój post jest oznaczony tagiem, powinieneś mieć minimalne różnice między przeglądarkami ... po to są frameworki, aby zająć się tymi różnicami między przeglądarkami za Ciebie.
Na przykład spójrz na stronę przechodzenia przez quirksmode DOM , zgodnie z nią IE nie obsługuje większości rzeczy ... podczas gdy prawda, frameworki tak, na przykład IE nie obsługuje
elem.childElementCount
, ale w jQuery:$(elem).children().size()
działa, aby uzyskać tę wartość, w każdej przeglądarce. Przekonasz się, że w bibliotece jest coś, co poradzi sobie z 99% nieobsługiwanych przypadków w różnych przeglądarkach, przynajmniej za pomocą skryptu ... w przypadku CSS może być konieczne przejście do wtyczek do biblioteki, typowym przykładem tego jest zaokrąglenie rogów pracuje w IE ... ponieważ nie ma dla nich wsparcia CSS.Jeśli jednak zaczniesz robić rzeczy bezpośrednio, na przykład
document.XXX(thing)
, nie jesteś w bibliotece, robisz bezpośrednio javascript (to wszystko jest javascript, ale rozumiesz o co chodzi :), a to może powodować problemy lub nie, w zależności od tego, jak pijany zespół IE był podczas wdrażania tej konkretnej funkcji.W IE jest bardziej prawdopodobne, że stylizacja wyjdzie dobrze, niż problemy z surowym javascriptem, animacje o kilka pikseli wyłączone i tym podobne rzeczy, o wiele więcej, oczywiście w IE6.
źródło
getElementbyID będzie również pasować do atrybutu name w IE, ale nie w innych przeglądarkach, a IE wybierze tę, którą znajdzie jako pierwszą.
przykład:
źródło
Jest mnóstwo rzeczy, ale jedną z pułapek, w które wpadałem, było to, że wiele przeglądarek akceptuje JSON bez cytowanych nazw, podczas gdy ie6 i ie7 nie.
Edycja : aby wyjaśnić, jest to problem tylko wtedy, gdy wymagany jest rzeczywisty JSON, w przeciwieństwie do literału obiektu. JSON jest podzbiorem składni literału obiektowego i jest pomyślany jako format wymiany danych (podobnie jak XML), dlatego został zaprojektowany tak, aby był trudniejszy.
źródło
Obsługa różnych języków JavaScript
IE nie obsługuje (większości) rozszerzeń dodanych do JavaScript od 1.5.
Nowość w wersji 1.6.0
indexOf()
,lastIndexOf()
,every()
,filter()
,forEach()
,map()
,some()
for each ... in
- iteruje wartości zamiast nazw właściwości.Nowość w wersji 1.7.0
[a,b] = [1,2]
let
iconst
oświadczeniaNowość w 1.8.1
reduce()
,reduceRight()
Niektóre z tych rzeczy wymagają określenia numeru wersji JavaScript do uruchomienia (który zepsuje się w IE), ale niektóre rzeczy, takie jak,
[1,2,3].indexOf(2)
mogą nie wydawać się tak ważne, dopóki nie spróbujesz go uruchomić w IEźródło
javascript
a (konkretną implementacją)JScript
, a nie różnic międzyMozilla JavaScript(TM)
iJScript
. Lepiej byłoby pokazać, gdzie IE różni się od ES.Główne różnice między JavaScript w IE i JavaScript w nowoczesnych przeglądarkach (np. Firefox) można przypisać tym samym przyczynom różnic w CSS / (X) HTML między przeglądarkami. W tamtych czasach nie istniał faktyczny standard; IE / Netscape / Opera walczyły w wojnie o wpływy, implementując większość specyfikacji, ale także pomijając niektóre, a także tworząc własne specyfikacje, aby zyskać przewagę nad innymi. Mógłbym kontynuować, ale przeskoczmy do wydania IE8: JavaScript był unikany / pogardzany przez lata, a wraz z rozwojem FF i pogardą dla webcomm, IE zdecydował się skupić głównie na ulepszaniu CSS z IE6 na. I zasadniczo zostawił obsługę DOM w tyle. Obsługa DOM w IE8 może być równie dobrze obsługiwana przez IE6, który został wprowadzony w 2001 roku ... więc obsługa DOM w IE jest prawie dziesięć lat za nowoczesnymi przeglądarkami. Jeśli masz rozbieżności JavaScript charakterystyczne dla silnika układu, najlepiej jest zaatakować go w ten sam sposób, w jaki zajęliśmy się problemami CSS; Kierowanie na tę przeglądarkę. NIE UŻYWAJ PRZEGLĄDARKI PRZEGLĄDARKI, użyj wykrywania funkcji, aby wykryć przeglądarkę / jej poziom obsługi DOM.
JScript nie jest własną implementacją ECMAScript w IE; JScript był odpowiedzią IE na JavaScript firmy Netscape, który powstał przed ECMAScript.
Jeśli chodzi o atrybuty typu w elemencie skryptu, type = "text / javascript" jest domyślnym standardem (przynajmniej w HTML5), więc nie potrzebujesz atrybutu type, chyba że twój skrypt nie jest JavaScript.
O ile IE nie obsługuje innerHTML ... innerHTML została wynaleziona przez IE i nadal NIE jest standardem DOM. Inne przeglądarki przyjęły go, ponieważ jest przydatny, dlatego można go używać w różnych przeglądarkach. Jeśli chodzi o dynamicznie zmieniające się tabele, MSDN mówi, że „ze względu na specyficzną strukturę wymaganą przez tabele, innerText i innerHTML obiektów table i tr są tylko do odczytu”. Nie wiem, ile z tego początkowo było prawdą, ale najwyraźniej współczesne przeglądarki odkryły to, radząc sobie ze złożonością układu tabeli.
Gorąco polecam przeczytanie PPK w JavaScript Jeremy Keith's DOM Scripting Douglas Crockford's JavaScript: The Good Parts i Christian Hellman's Beginning JavaScript with DOM Scripting i Ajax, aby dobrze zrozumieć JavaScript.
Jeśli chodzi o frameworki / biblioteki, jeśli nie masz jeszcze dobrego zrozumienia JavaScript, powinieneś ich unikać. Dwa lata temu wpadłem w pułapkę jQuery i chociaż byłem w stanie dokonać wspaniałych wyczynów, nigdy nie nauczyłem się niczego o poprawnym kodowaniu JavaScript. Z perspektywy czasu jQuery to niesamowity, niesamowity zestaw narzędzi DOM, ale moja niezdolność do nauczenia się prawidłowych zamknięć, prototypowego dziedziczenia itp. Nie tylko cofnęła moją osobistą wiedzę, ale moja praca zaczęła osiągać ogromne hity wydajnościowe, ponieważ nie miałem pojęcia, co robię.
JavaScript to język przeglądarki; Jeśli jesteś inżynierem po stronie klienta / front-endu, niezwykle ważne jest, aby sterować JavaScript. Node.js wprowadza JavaScript w pełnym zakresie, codziennie widzę ogromne postępy w jego rozwoju; JavaScript po stronie serwera będzie standardem w najbliższej przyszłości. Wspominam o tym, aby jeszcze bardziej podkreślić, jak ważny jest teraz i będzie JavaScript.
JavaScript zrobi więcej fal niż Railsy.
Miłego tworzenia skryptów!
źródło
Niektóre obiekty natywne są tylko do odczytu, ale tak naprawdę nie wydaje się, że takie są (możesz do nich pisać, ale nie ma to żadnego efektu). Na przykład wspólny zaawansowany skrypt javascript opiera się na rozszerzeniu
Element
obiektu przez nadpisywanie metod systemowych, powiedzmy, zmianę Element.prototype.appendChild (), aby robił więcej niż dołączanie węzła potomnego - powiedzmy, zainicjuj go danymi rodzica. To zawiedzie po cichu w IE6 - oryginalna metoda zostanie wywołana na nowych obiektach zamiast na nowej.Niektóre przeglądarki (nie pamiętam teraz, która teraz) uważają znaki nowej linii między tagami HTML za węzły tekstowe, podczas gdy inne nie. Więc childNodes (n), nextSibling (), firstChild () i tym podobne będą zachowywać się zupełnie inaczej.
źródło
Końcowe przecinki w tablicach i literałach obiektów były kiedyś problemem, ostatnio nie były sprawdzane (co oznacza IE8):
Spowodowałoby to dodatkowy kod podczas generowania takich struktur po stronie serwera.
źródło
Właśnie znalazłem jeden dziś rano, współpracownik ustawił tag skryptu jako:
<script type="application/javascript">
ponieważ jego autouzupełnianie ide miało to przed „text / javascript”Ale okazuje się, że IE po prostu ignoruje cały skrypt, jeśli używasz „application / javascript”, musisz użyć „text / javascript”
źródło
<script>
Niedawno znalazłem dziwne dziwactwo z Internet Explorerem. Używałem YUI i zastępowałem zawartość tabeli body () przez ustawienie innerHTML
To działałoby we wszystkich przeglądarkach Z WYJĄTKIEM IE. W końcu odkryłem, że nie można zastąpić innerHTML tabeli w IE. Musiałem utworzyć węzeł za pomocą YUI, a następnie dołączyć ten węzeł.
Fajnie było to wymyślić!
źródło
<tbody>
metkami.Dodatkowe przecinki i brakujące przecinki były zwykłym problemem w IE, podczas gdy działa płynnie na FF.
źródło
IE bardzo surowo podchodzi do braku ";" tak jest zwykle.
źródło
Cóż to jest warte, natknąłem się właśnie na ten nieprzyjemny problem w <IE9
powiedz, że masz taki kod HTML:
iz jakiegoś powodu (miałem dobry) musisz pobrać cały kod HTML z tabeli przed ostatnim zamykającym TR, możesz spróbować czegoś takiego:
<IE9 nie zwróci nic (-1) tutaj, ponieważ zmienna tableHtml zawiera wszystkie znaczniki HTML pisane dużymi literami, a lastIndexOf rozróżnia wielkość liter. Aby obejść ten problem, musiałem dorzucić toLowerCase () przed lastIndexOf.
źródło
IE nie jest nowoczesną przeglądarką i tylko luźno podąża za ECMAScript.
źródło
Wspomniałeś o jQuery, z którym jestem mniej zaznajomiony, ale dla ogólnego odniesienia, a konkretnie w przypadku Prototype, jedną rzeczą, na którą należy zwrócić uwagę, są zastrzeżone słowa / nazwy metod w IE. Wiem, co często mnie dosięga, to:
someElement.appendChild(new Element('label',{ **for**: someInput.id }).update( someLabelText );
(new Element (tagName, propertyHash) to sposób tworzenia nowych elementów w Protitype). W IE
for:
musi być'for':
, ponieważfor
jest to słowo zastrzeżone. Co ma sens - ale FireFox to toleruje.Inny przykład:
someElement.wrap('div').addClassName('someClass')
(
wrap
metoda w Prototype zawija jeden element w inny) - W IE na obszarach tekstowychwrap
jest to właściwość, aElement.wrap()
musi być używana zamiast wersji metodowanejOto dwa przykłady, które przychodzą mi do głowy z mojego doświadczenia. Opierają się na prototypie, ale głównym problemem nie jest: uważaj na wszelkie metody / etykiety / identyfikatory, które IE uważa za zastrzeżone słowa, ale FireFox lub Safari będą tolerować.
źródło
Faktem jest, że IE nie obsługuje JavaScript ... Obsługuje własną implementację ECMAScript: JScript ... która jest trochę inna ...
źródło
Używanie
console.log()
do wyświetlania błędów w konsoli błędów Firefoksa spowoduje awarię skryptów w IE. Pamiętaj, aby je usunąć podczas testowania w IE.źródło