2013-06-12 1 views
0

Я работаю над Windows 8 Winjs. Это код, в котором я объявляю переменные в javascript. Почему во второй строке отображается ошибка «0x800a138f - ошибка времени выполнения JavaScript: невозможно получить свойство getContext неопределенной или нулевой ссылки». Является ли способ объявления canvas.getcontext неправильным? Тот же код отлично работает на рабочем столе, но он не работает в Simulator.Почему объявление переменной отображается в приложении Windows 8?

var canvas = document.getElementById('canvas'), 
     context = canvas.getContext('2d'), 
     controls = document.getElementById('controls'), 
     animateButton = document.getElementById('animateButton'); 
+0

ли canvas'' существует элемент с идентификатором '' в то время, что код работает? Если ваша переменная 'canvas' не будет' null', значит, ошибка. – nnnnnn

+0

id = "canvas" существует в html документе. Если я удалю эту строку, она будет выполняться с пустым холстом. –

ответ

0

Нет элемента с холстом id. Ваш var canvas - null после назначения. Убедитесь, что вы выполняете все это внутри вас app.ready обратный вызов, когда DOM готов.

app.onready = function (args) { 
    var canvas = document.getElementById('canvas'), 
     context = canvas.getContext('2d'), 
     controls = document.getElementById('controls'), 
     animateButton = document.getElementById('animateButton'); 
} 
1

Доступ к вашим элементам дома после загрузки страницы. это можно сделать в обработчике событий page.ready.

page.js: 
WinJS.UI.Pages.define('/pages/mypage/page.html', 
    { 
     ready: function onready(element, options) 
     { 
      // all dom elements with id will have the respective variables available here. 
      // need not create variable for canvas. 
      var context = canvas.getContext('2d'); 
     } 
    }); 

page.html:

<html> 
<head> 
    <title></title> 
    <link href="/pages/mypage/mypage.css" rel="stylesheet" /> 
    <script src="/pages/mypage/mypage.js" type="text/javascript"></script> 
</head> 
<body> 
    <div class="mypage fragment"> 
     <header role="banner"> 
      <button class="win-backbutton" aria-label="Back" disabled type="button"></button> 
      <h1 class="titlearea win-type-ellipsis"> 
       <span class="pagetitle">My Page</span> 
      </h1> 
     </header> 
     <section aria-label="Main content" role="main"> 
      <canvas id="canvas"> 
      </canvas> 
     </section> 
    </div> 
</body> 

+0

И помните, что вы можете добавить точку останова в строку, которая дает вам проблемы (F9), запустить в режиме отладки (F5), а затем проверить эту строку в окне Quick Watch (Shift + F9). Если вы это сделаете и введите 'document.getElementById ('canvas')' в поле оценки Quick Watch и нажмите Enter, вы увидите «null», то есть не сможете найти холст. –