Элементы холста в Internet Explorer добавлены во время выполнения не работает - PullRequest
3 голосов
/ 24 марта 2011

Я пытаюсь нарисовать на некоторых элементах холста и, конечно, мне нужно, чтобы он работал в Internet Explorer. Поэтому я провел поиск и использовал explorercanvas, чтобы получить эту функциональность. Но я обнаружил, что по какой-то причине IE недоволен элементами canvas, которые добавляются после начальной загрузки страницы.

В приведенном ниже примере есть два элемента canvas: один присутствует в HTML для страницы, а другой добавлен в DOM ready. Скрипт, который рисует на холсте, работает только с тем элементом, который присутствовал до его запуска.

Linky

Я попытался использовать отладчик IE, чтобы выяснить, что происходит, и вижу, что для холста HTML $ (this) [0] возвращает DispHTMLGenericElement, но холст времени выполнения возвращает DispHTMLUnknownElement. Я также попробовал это с document.getElementByID (), и то же самое происходит. Это просто еще одна странность в том, как IE работает с элементами canvas? Есть ли способ обойти это?

1 Ответ

2 голосов
/ 24 марта 2011

Из файла "инструкций" для Explorer Canvas:

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

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

Вот так.Теперь вы можете использовать спецификацию HTML5 для Canvas в качестве ссылки.

...