HTMLCanvas 'getContext' не является поддерживаемым свойством или методом - PullRequest
8 голосов
/ 16 февраля 2012

Я только что запустил игровое приложение HTML5 и продолжаю получать сообщения ', не поддерживающие свойства или метод' getContext ', журналы ошибок некоторых моих пользователей.

MyНастройка позволяет играть только пользователям с Chrome (16 <), Firefox (9 <) или IE (9 <).Пользователи IE (<9) получают установку chromeframe. </p>

Это только некоторые из моих пользователей IE9, которые выбрасывают это исключение.Я играл в игру на нескольких машинах с Windows с IE9, как Vista, так и Windows 7.

При поиске моего источника, для вызова функции getContext, я получаю ту же схему.Я создаю элемент canvas, используя document.createElement, а затем вызываю getContext ('2d'), следующую строку.

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

Учитывая, что многие из моих пользователей IE9 запускают игру как надо, я нене думаю, что это проблема с моим кодом, а скорее с какой-то панелью инструментов / плагином или настройкой в ​​IE9, которая меня тут смущает.

Что вы, ребята, думаете?

Ответы [ 4 ]

10 голосов
/ 17 февраля 2012

После вставки <meta http-equiv="X-UA-Compatible" content="chrome=1, IE=edge"> мы значительно сократили количество ошибок, у нас все еще есть несколько, но это могут быть пользователи, входящие в систему с помощью странных браузеров, которые не проверяет проверка установки chromeframe.

chrome = 1 означает «использовать хромированную рамку», если она есть.

IE = edge означает «использовать максимально возможную версию IE».

Так что я пойду с этим сейчас.

3 голосов
/ 16 февраля 2012

Насколько я знаю, IE9 полностью поддерживает тэг canvas.Но пользователь должен убедиться, что он не находится в режиме совместимости.Но просто чтобы избежать проблемы, я предлагаю вам использовать excanvas.Если вы не знаете, как скачать excanvas и добавить следующую ссылку

<!--[if lt IE 9]><script src="../excanvas/excanvas.original.js"></script><![endif]-->
0 голосов
/ 15 июля 2013

С Инструкции

Динамически созданные элементы Если вы создали свой элемент canvas динамически, к нему не будет добавлен метод getContext. Чтобы заставить его работать, вам нужно вызвать initElement для объекта G_vmlCanvasManager.

var el = document.createElement('canvas');
G_vmlCanvasManager.initElement(el);
var ctx = el.getContext('2d');
0 голосов
/ 16 февраля 2012

Рассматривали ли вы возможность того, что пользователи не знают, какую версию IE они используют, и сообщают об этом неправильно?

...