窗口上的 addEventListener 无法识别事件?load/domcontentLoaded不起作用



我试图打开一个新窗口时,一个按钮被点击,并在新窗口打印的东西。我已经将按钮链接到以下'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"一起工作?

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

<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> 

最新更新