2012-02-16 9 views
8

Właśnie stworzyłem aplikację do gier HTML5 i nadal otrzymuję obiekt "", który nie obsługuje logów błędów lub właściwości "getContext" niektórych moich użytkowników.HTMLCanvas 'getContext' nie jest obsługiwaną właściwością lub metodą

Moja konfiguracja pozwala tylko użytkownikom z Chrome (16 <), Firefox (9 <) lub IE (9 <) do grania. IE (< 9) użytkownicy uzyskują instalację chromeframe na ich twarzach.

To tylko niektórzy z moich użytkowników IE9, którzy rzucają ten wyjątek. Grałem w grę na kilku komputerach z systemem Windows z IE9, zarówno Vista, jak i Windows 7.

Wyszukiwanie mojego źródła, dla wywołania funkcji getContext, otrzymuję ten sam wzór. Tworzę element canvas za pomocą document.createElement, a następnie wywołuję getContext ("2d"), następny wiersz.

var buffer = /** @type {!HTMLCanvasElement} */ (document.createElement('canvas')), 
    ctx = /** @type {!CanvasRenderingContext2D} */ (buffer.getContext('2d')), 
    draw = function(ctx) { 
     /** 
     * Alot of drawing calls. 
     */ 
    }; 
draw(ctx); 

Biorąc pod uwagę, że wiele z moich użytkowników IE9 uruchomić grę jak należy, nie sądzę, że jest to problem z mojego kodu, ale raczej pewne Pasek/plugin lub ustawienie w IE9, która jest potknięciem mnie tutaj .

Co wy myślicie?

Odpowiedz

3

o ile wiem, że IE9 w pełni obsługuje tag canvas. Ale użytkownik powinien upewnić się, że nie jest w trybie zgodności. Ale żeby uniknąć problemu, sugeruję użycie excanvas. Jeśli nie zna Jak pobrać excanvas i dodać poniższy link

<!--[if lt IE 9]><script src="../excanvas/excanvas.original.js"></script><![endif]--> 
+0

Tak, ale jeśli użytkownicy są w trybie zgodności IE poniżej 9, powinni otrzymać wyskakujące okienko z ramką Chrome i nie być w stanie grać w grę przed zainstalowaniem ramki chrome ... W każdym razie umieściłem w nagłówku mojej strony, więc powinno to powstrzymać użytkowników przed uruchomieniem gry w trybie dziwactw IE. Nie mam zamiaru wdrażać wsparcia excanvas. Wrócę, gdy dowiem się, że metatag zmienił coś. – Firecow

0

Czy bierzesz pod uwagę możliwość, że użytkownicy nie wiedzą, która wersja IE ich używania i zgłaszają je nieprawidłowo?

+0

To nie możliwe .. ciąg userAgent jest wysyłany automatycznie, gdy zostaną przechwycone wyjątki. – Firecow

10

Po wstawieniu <meta http-equiv="X-UA-Compatible" content="chrome=1, IE=edge"> znacznie zmniejszyliśmy liczbę błędów, nadal mamy ich kilka, ale to użytkownicy mogą logować się w dziwnych przeglądarkach, których nie sprawdza się sprawdzenie instalacji chromeframe.

chrome = 1 oznacza "użyj chromowanej ramki", jeśli jest tam.

IE = krawędź oznacza "użyj najwyższej możliwej wersji IE".

Więc na razie to zrobię.

+0

pracował dla mnie dzięki! – hevi

+0

Jakie zmiany wprowadziłeś? @hevi – Illaya

+0

Zgodnie z oświadczeniem [tutaj] (http: // stackoverflow.com/questions/25557299/internet-explorer-11-disable-display-intranet-sites-in-compatibility-view-via), upewnij się, że jest to pierwsza meta instrukcja. – B5A7

0

Od Instructions

tworzone dynamicznie elementów Jeśli utworzeniu elementu canvas dynamicznie nie będzie mieć metodę getContext dodany do elementu. Aby to działało, musisz wywołać metodę initElement w obiekcie G_vmlCanvasManager.

var el = document.createElement('canvas'); 
G_vmlCanvasManager.initElement(el); 
var ctx = el.getContext('2d'); 
+0

Otrzymuję błąd w G_vmlCanvasManager @Confa – Illaya

Powiązane problemy