我有一个简单的 HTML5 Snake 游戏,它使用我想打包为 Chrome 应用程序的画布。这是我的普通 HTML 文件:
<!DOCTYPE html>
<html>
<head>
<title>Snake</title>
<link rel="stylesheet" href="snake.css">
</head>
<body>
<canvas id="canvas" width="700" height="700"></canvas>
<script type="text/javascript" src="food.js"></script>
<script type="text/javascript" src="snake.js"></script>
<script type="text/javascript" src="point.js"></script>
<script type="text/javascript" src="game.js"></script>
<script type="text/javascript">
window.onload = function() {
var canvas = document.getElementById("canvas"),
game = new Game(canvas, new Snake(canvas), new Food(canvas));
game.init();
game.run();
}
</script>
</body>
</html>
但是不允许使用 HTML 中的脚本。所以我删除了它并将它放置在创建窗口的 main.js 中。我提供了一个与上面相同的回调,window.onload
因为我的理解是这是 chrome 应用程序等价物:
chrome.app.runtime.onLaunched.addListener(function() {
"use strict";
chrome.app.window.create('snake.html', {
bounds: {
width: 800,
height: 800
}
}, function() {
var canvas = document.getElementById("canvas"),
game = new Game(canvas, new Snake(canvas), new Food(canvas));
game.init();
game.run();
});
});
这在 DOM 似乎已加载但document.getElementById
始终返回 null 之后运行。查看开发人员工具中的文档,即使我可以在应用程序窗口中看到画布(我在画布周围有一个边框),它看起来也只加载了脚本。谁能告诉我发生了什么?window.onload
何时不工作时访问 DOM 的合适位置在哪里?