Javascript 为什么变量声明在Windows 8应用程序中显示错误?
我正在使用Windows8WinJS应用程序。这是我在javascript中声明变量的代码。为什么第二行显示错误“0x800a138f-JavaScript运行时错误:无法获取未定义或空引用的属性“getContext”。声明canvas.getContext的方式是否错误?同样的代码在桌面chrome中运行良好,但在模拟器中不起作用Javascript 为什么变量声明在Windows 8应用程序中显示错误?,javascript,.net,html,windows-8,winjs,Javascript,.net,Html,Windows 8,Winjs,我正在使用Windows8WinJS应用程序。这是我在javascript中声明变量的代码。为什么第二行显示错误“0x800a138f-JavaScript运行时错误:无法获取未定义或空引用的属性“getContext”。声明canvas.getContext的方式是否错误?同样的代码在桌面chrome中运行良好,但在模拟器中不起作用 var canvas = document.getElementById('canvas'), context = canvas.getConte
var canvas = document.getElementById('canvas'),
context = canvas.getContext('2d'),
controls = document.getElementById('controls'),
animateButton = document.getElementById('animateButton');
没有加载id为canvas的元素。赋值后,您的
var画布
为null
。确保在DOM
就绪时,您正在app.ready
回调中执行所有这些操作
app.onready = function (args) {
var canvas = document.getElementById('canvas'),
context = canvas.getContext('2d'),
controls = document.getElementById('controls'),
animateButton = document.getElementById('animateButton');
}
加载页面后访问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>
我的页面
代码运行时是否存在id为“canvas”的元素?如果不是,则
canvas
变量将为null
,因此html文档中存在error.id=“canvas”。如果我删除这一行,它将以空白画布执行。请记住,您可以在给您带来麻烦的行中添加断点(F9),在调试模式下运行(F5),然后在快速观察窗口(Shift+F9)中检查该行。如果您这样做,并在快速观察评估框中输入document.getElementById('canvas')
,然后点击enter,您将看到null
,这意味着它找不到画布。