2013-06-12 40 views
0

我正在使用Windows 8 Winjs應用程序。這是我在javascript中聲明變量的代碼。爲什麼第二行顯示錯誤「0x800a138f - JavaScript運行時錯誤:無法獲取未定義或空引用的屬性'getContext'。」是否聲明canvas.getcontext的方法是錯誤的?相同的代碼在桌面chrome中工作正常,但它在Simulator中不起作用。爲什麼變量聲明在Windows 8應用程序中顯示錯誤?

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

是否與''的ID元素canvas''這些代碼運行的時間存在嗎?如果不是你的'canvas'變量將是'null',那麼就是錯誤。 – nnnnnn

+0

id =「canvas」存在於html文檔中。如果我刪除這一行,它會使用空白畫布執行。 –

回答

0

沒有加載id canvas的元素。分配後您的var canvasnull。當DOM準備就緒時,請確保您在app.ready回撥中執行所有這些操作。

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

訪問你的DOM頁面加載後的元素。這可以在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)下運行,然後在快速監視窗口(Shift + F9)中檢查該線路。如果你這樣做,並在快速觀察評估框中輸入'document.getElementById('canvas')'並按下Enter,你會看到'null',這意味着它找不到畫布。 –

相關問題