javascript 窗口上的addEventListener无法识别事件?load/DOMContentLoaded不工作

mzaanser  于 2023-01-16  发布在  Java
关注(0)|答案(1)|浏览(258)

我试图在单击按钮时打开一个新窗口,并在新窗口中打印一些内容。我已将按钮链接到以下“switchToNewWindow”方法:

windowOpen: false,

switchToNewWindow() {
  if (!this.windowOpen) {
    var win = window.open('', '_blank', 'location=no,titlebar=no,toolbar=no,top=200,left=350,width=1200,height=650');
    this.windowOpen = true;
    win.addEventListener('beforeunload', function() {
      this.windowOpen = false;
    }.bind(this));
  }
},

上面的方法是有效的,但是如果我想如下所示更改侦听器,侦听器中的代码就不会执行。

win.addEventListener('load', function () {
    win.document.write("Hello, world!");
});

在控制台中调试时,我可以看到代码没有进入第二个示例中的函数。我应该提到,我也尝试使用“DOMContentLoaded”而不是“load”,但仍然不起作用。我的猜测是事件没有被识别?知道为什么或还有什么在这里被中断吗?为什么它使用“beforeunload”?

oalqel3c

oalqel3c1#

我已经使用自定义事件完成了这一操作。也许不是最好的方法,但请检查它是否适用于您的情况。

<html>
 <head>
   <script>
    function switchToNewWindow() {
        var win = window.open('', '_blank', 'location=no,titlebar=no,toolbar=no,top=200,left=350,width=1200,height=650');
      
        win.addEventListener('writetowin', function(){
            this.document.write('Hello World');
        });

        var myEvent = new CustomEvent('writetowin');

        win.dispatchEvent(myEvent);
    }
</script>
</head>
<body>
  <input type="button" value="click" onclick="switchToNewWindow()"/>
</body>
</html>

相关问题