excanvas.js не работает на IE с динамическим скриптом загрузки
Я динамически загружаю скрипт в документ с помощью jQuery $.getScript()
метод, как, $.getScript("excanvas.js", function(data){});
На создание холста я применил следующее утверждение для холста,
var canvasDiv = document.createElement('canvas');
canvasDiv.setAttribute("width", canvasBounds.width+"px");
canvasDiv.setAttribute("height", canvasBounds.height+"px");
if(window.G_vmlCanvasManager){
canvasDiv = G_vmlCanvasManager.initElement(canvasDiv);
}
и я пытаюсь нарисовать линию на холсте, это не работает.
Если я загружаю excanvas.js в тег script, он работает нормально. это как
<head>
<script src="excanvas.js" type="text/javascript"></script>
</head>
Я не могу найти причину. Кто-нибудь может предложить решение?
2 ответа
Я использовал это, и это работает для меня:
if ($.browser.msie) {
G_vmlCanvasManager.initElement(canvasDiv);
}
После выполнения верхнего шага, получите контекст холста:
context = canvasDiv.getContext('2d');
Теперь нарисуйте линию, используя context
переменная.
Если вы хотите загрузить excanvas асинхронно / условно, это возможно.
Во-первых, как указано в инструкциях, элемент (ы) холста не может существовать на странице до тех пор, пока не будет загружена и инициализирована программа AFTER excanvas, поэтому рассмотрите возможность их генерации или последующей асинхронной загрузки.
После загрузки библиотеки excanvas (через jQuery, requirejs и т. Д.), Вызовите это:
G_vmlCanvasManager.init_(document);
Это вызывает внутреннюю функцию init менеджера, которая обычно слушает готовый документ (который обычно уже запущен).