2013-02-04 26 views
19

Po prostu zacząłem grać z IE10 na Win8 i wpadłem na problem. Konsola narzędzi programistycznych nie działa, gdy tryb dokumentu jest ustawiony na Standardy. Grałem zarówno z trybem przeglądarki, jak i trybem dokumentu, a konsola działa po ustawieniu jako standard IE9, ale ustawiając go po prostu "Standardy", domyślne dla IE10, konsola nie jest zdefiniowana. Jakieś pomysły?IE10 console.log nie działa

To nie jest duplikat. Podczas testowania konsola programisty jest otwarta. Przełączanie trybu Doc do standardów IE9 i ponowne ładowanie wyświetla dane wyjściowe konsoli zgodnie z oczekiwaniami. Powrót do standardów IE10 nie wyświetla żadnych wyników konsol. Debugowanie pokazuje, że konsola jest niezdefiniowana, co powoduje, że console.log ustawia pustą funkcję do obsługi niezdefiniowanego. Zastanawiam się, dlaczego konsola nie jest zdefiniowana w trybie standardowym IE10.

Używam Win8 w VirtualBox. Moja strona jest znacznikiem HTML4 z odpowiednim typem dokumentu.

+9

Musisz mieć otwarte narzędzia programistyczne * po załadowaniu strony *. Zobacz [tutaj] (http://stackoverflow.com/questions/10415519/does-ie9-enable-something-when-using-developer-tools/10415712#10415712) – jbabey

+0

Narzędzia programistyczne są otwarte po załadowaniu strony. – James

+0

Więc otwórz stronę, naciśnij klawisz F12, aby otworzyć narzędzia programistyczne, a następnie naciśnij klawisz F5, aby ponownie wczytać stronę, a 'console' nadal wyświetla się jako" niezdefiniowana "? – jbabey

Odpowiedz

5

zdefiniuj!

if (typeof console == "undefined") { 
    this.console = {log: function() {}}; 
} 

patrz: 'console' is undefined error for Internet Explorer

+0

Wygląda na to, że OP wie o tym obejściu, ale jest ciekawy, dlaczego 'console.log' nie działa poprawnie w niektórych trybach. – jahroy

+0

To już trwa. Uwaga: "Debugowanie pokazuje, że konsola jest niezdefiniowana, co powoduje, że console.log ustawia pustą funkcję do obsługi niezdefiniowanego." – James

7

Powodem console.log(); jest niezdefiniowana dlatego, że to działa w trybie standardów. IE 8 ma tryb zgodności, który dosłownie zamienia go w IE 7, usuwając wszelkie zrozumienie funkcji dodanych do IE 8. Konsola została dodana w IE 10, więc uruchamiając go w trybie standardowym, miałoby sens, by mógł on podawać błędy.

<head> 
    <title>Force IE 10</title> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
</head> 

Ten metatag tutaj wymusi uruchomienie IE w najnowszej wersji, którą zainstalowałeś (wyłączając standardy i tryb zgodności). Jest to jedyny sposób zdefiniowania konsoli w IE 10 w trybie standardowym - poprzez wyłączenie trybu standardowego.

+2

Microsoft wyjaśnia, że ​​IE = edge "jest funkcjonalnie równoważne użyciu doctype HTML5", więc wystarczy . Zobacz http://msdn.microsoft.com/en-US/library/jj676915.aspx –

+5

Na jakiej planecie to "ma sens"? Ma to sens, ponieważ Microsoft tworzy okropną przeglądarkę, która nigdy nie spełnia rzeczywistych "standardów". –

+3

Ma to sens ze względu na sposób, w jaki IE 8 obsługuje błędy. Po prostu wywala resztę tego javascriptu. Umieszczenie pliku 'console.log()' na początku pliku jQuery spowoduje, że jQuery nie zostanie załadowany na stronę. Posiadanie IE 10 w trybie standardowym z wdziękiem wyjdzie z błędu, spowoduje, że będzie on działał inaczej niż IE 8. Również, dla tanguy_k, '' spowoduje, że IE 9 i poniżej będą domyślnie "loose.dtd" (może to być być 'transitional.dtd', zapominam, które) i może spowodować uszkodzenie strony CSS strony. – Andrew