Файл Javascript (excanvas) не работает, когда я загружаю его внизу страницы - PullRequest
0 голосов
/ 19 июня 2010

Это работает:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

  <script src="/js/msgv/widgets/excanvas2.js" type="text/javascript"></script>
  <script type="text/javascript" charset="utf-8">
    function canvasTest(){
      console.log("beginning canvasTest");
      var b_canvas = document.getElementById("regularCanvas");
      var b_context = b_canvas.getContext("2d");
      b_context.fillRect(50, 25, 150, 100);
    }
  </script>

</head>

<body onLoad="canvasTest()">
    <canvas id="regularCanvas" style="border: 1px dotted; float: left;" class="clear" height="225" width="300"></canvas>
</body>
</html>

Это не:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

Единственная разница между ними заключается в том, где я загружаю их на странице. Все отлично работает, когда я загружаю в голову excanvas. Я получаю сообщение об ошибке при загрузке в нижней части тела.

  <script type="text/javascript" charset="utf-8">
    function canvasTest(){
      console.log("beginning canvasTest");
      var b_canvas = document.getElementById("regularCanvas");
      var b_context = b_canvas.getContext("2d");
      b_context.fillRect(50, 25, 150, 100);
    }
  </script>

</head>

<body onLoad="canvasTest()">
    <canvas id="regularCanvas" style="border: 1px dotted; float: left;" class="clear" height="225" width="300"></canvas>
  <script src="/js/msgv/widgets/excanvas2.js" type="text/javascript"></script>
</body>
</html>

Ответы [ 2 ]

3 голосов
/ 19 июня 2010

RTFM :

Файл excanvas.js должен быть включен на страницу до появления элементов canvas в разметке. Это связано с ограничениями в IE, и мы должны сделать свое волшебство, прежде чем IE увидит какой-либо экземпляр в разметке. Рекомендуется положить его в голову.

0 голосов
/ 30 августа 2013

Если вы хотите загрузить excanvas асинхронно / условно, это возможно: https://stackoverflow.com/a/18520897/541023

...