首页 > 解决方案 > 如何处理 JavaScript 中变量的 Uncaught TypeError?

问题描述

我正在尝试使用下面给出的 JavaScript 代码多次打开一个选项卡。

function webAssign() {
  let i;
  let myWin;
  for (i = 1; i < 4; i++) {
    console.log(i);
      
    myWin = window.open("index.html");
    myWin.close();
  }
}

运行此代码后,它会抛出下面给出的错误..

Uncaught TypeError: myWin is null

我怎么解决这个问题?

标签: javascript

解决方案


来自MDN 的页面window.open

返回值

一个 WindowProxy 对象,它基本上是代表新创建的窗口的 Window 对象的一个​​瘦包装器,并且具有所有可用的功能。如果无法打开窗口,则返回值为null.

(我的重点)

有些上下文(您的代码可能正在运行的环境)无法打开窗口,或者无法打开特定来源的窗口。在这些情况下,window.open返回null. 例如,这里的 Stack Snippets 功能不允许window.open

function webAssign() {
  let i;
  let myWin;
  for (i = 1; i < 4; i++) {
    console.log(i);
      
    myWin = window.open("index.html");
    myWin.close();
  }
}
webAssign();

在 Chrome 上运行会出现错误(在 Web 控制台中):

阻止在新窗口中打开“https://stacksnippets.net/index.html”,因为请求是在未设置“allow-popups”权限的沙盒框架中发出的。


但除此之外,在一个紧密的循环中打开和立即关闭窗口并没有任何意义。


推荐阅读