Javascript:'window'未定义

时间:2013-01-04 20:32:27

标签: javascript dom

好吧,我正在尝试学习一些javascript,但这很痛苦。

以下代码给我带来了很多麻烦:

window.onload = function () {
    for ( var i = 0; i < seats.length; i++) {
        for ( var j = 0; j < seats.length; j++) {
            document.getElementById(getSeatId(i, j)).onclick = function(evt) {
                getSeatStatus(getSeatId(i, j));
            };
        }
    }
    document.getElementById("search").onclick = findSeat;
    document.getElementById("male_search").onclick = findMaleSeats;
    initSeats();
};

它来自外部js文件,它是链接到该页面的唯一文件。 findSeat,findMaleSeats,getSeatId,initSeats都是稍后在文件中定义的。当我双击此文件时,我收到以下错误(请注意,这是我母语的翻译):

Windows脚本宿主 错误:未定义“窗口” 代码:800A1391

我已经尝试将代码移动到文件中的其他位置,尝试为window.onload和许多其他东西分配不同的函数(甚至是空函数)。看来我的电脑似乎不知道是什么窗口。如果我尝试在浏览器中打开HTML,则无法加载(正如人们所期望的那样)。

有人知道这有什么问题吗?

3 个答案:

答案 0 :(得分:23)

窗口对象表示浏览器中的打开窗口。由于您没有在浏览器中运行代码,而是通过Windows脚本主机,因此解释器将无法找到窗口对象,因为它不存在,因为您不在Web浏览器中。

答案 1 :(得分:10)

  

它来自外部js文件,它是链接到该页面的唯一文件。

行。

  

当我双击此文件时,我收到以下错误

听起来像是双击/运行.js文件,它会尝试在浏览器外部运行脚本,就像命令行脚本一样。这可以解释这个错误:

Windows Script Host Error: 'window' is not defined Code: 800A1391

...不是您在浏览器中看到的错误。当然,浏览器提供window对象。

ADDENDUM :作为一种行动方案,我建议您打开相关的 HTML文件并查看控制台。如果您没有看到任何内容,那么在浏览器触发window.onload事件后,您的window.onload定义可能只是被点击。

答案 2 :(得分:1)

尝试访问未定义的变量会抛出ReferenceError

对此的一种解决方案是使用typeof

if (typeof window === "undefined") {
  console.log("Oops, `window` is not defined")
}