Javascript 未在Chrome应用程序中加载DOM

Javascript 未在Chrome应用程序中加载DOM,javascript,google-chrome,canvas,google-chrome-devtools,google-chrome-app,Javascript,Google Chrome,Canvas,Google Chrome Devtools,Google Chrome App,我有一个简单的HTML5蛇游戏,它使用我想打包为Chrome应用程序的画布。这是我的普通HTML文件: <!DOCTYPE html> <html> <head> <title>Snake</title> <link rel="stylesheet" href="snake.css"> </head> <body> <can

我有一个简单的HTML5蛇游戏,它使用我想打包为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>
这将在DOM似乎已加载但
文档后运行。getElementById
始终返回null。在开发者工具中查看文档,看起来只有脚本被加载,即使我可以在应用程序窗口中看到画布(画布周围有一个边框)。谁能告诉我发生了什么事?当
窗口。onload
不起作用时,从哪里访问DOM是合适的位置?

main.js正在运行,并且与新创建的窗口的DOM不在同一上下文中。您可以与上记录的上下文进行交互,但这不是我建议解决此问题的方式

相反,只需从main.js创建窗口,然后从HTML文件加载直接执行的脚本代码

window.html:

<!DOCTYPE html>
<html>
    <body>
        <canvas id="canvas" width="700" height="700"></canvas>
        <script ...</script>
        <script type="text/javascript" src="window.js"></script>
var canvas = document.getElementById("canvas"),
game = new Game(canvas, new Snake(canvas), new Food(canvas));
game.init();
game.run();
var canvas = document.getElementById("canvas"),
game = new Game(canvas, new Snake(canvas), new Food(canvas));
game.init();
game.run();