on(’load’)对于Internet Explorer 11中打开的弹出窗口不起作用

我不记得上次我用弹出窗口做什么了,但是:(

我想打开新窗口,当它打开时我想喊“1”。 窗口在所有浏览器中打开,但在IE 11 / Edge中它不会警告()。

    $(document).ready(function(){ $('#button').on('click',function(e){ e.preventDefault(); var win = window.open ('/test.html') $(win).on('load',function(){ alert ('opened'); }); }); });    button   

之所以发生是因为IE11(并且可能是Edge)没有从窗口打开调用返回,直到窗口打开完成加载。 您调用的load事件处理程序未被调用,因为事件已经触发。

file:协议文件不断要求允许阻止内容和崩溃IE之后,使用localhost node.js / express服务器恢复测试。

通过在test.html中放入一个load事件监听器来validation结果,该监听器包含将“test loaded
”附加到DIV元素内容的代码,并将代码放入click处理程序以附加“window opened
”到同一个DIV,在页面打开后,立即打开窗口打开。

IE按顺序报告“测试加载,窗口打开”。 Firefox在开始页面中引发了一个错误,即用于登录已打开页面的DIV元素尚未存在(如预期的那样)。

如果不知道窗口间访问需要实现什么以及您控制和修改哪些文件,则很难建议编码解决方案。 知道问题是什么应该有帮助!

取出window.open之后和括号之前的空格,这样你就不会绊倒JS引擎。 你可以用win持有window.open函数的副本,而不是新窗口本身。

虽然在是否在括号之前放置一个空格来定义函数的参数列表可以是一种风格选择,如:

 // Either of these will work function foo (a, b, c) { ... function foo(a, b, c) { ... 

在方法名称之后和括号之前永远不应该有一个空格对该方法的参数进行分组:

 obj.foo(x); // Correct obj.foo (x); // Incorrect 

注意:由于沙箱,此代码不会在Stack Overflow代码段区域中执行。

 $(document).ready(function(){ // Set the "button" to have a click callback $('#button').on('click',function(e){ // Cancel the native click event of the hyperlink e.preventDefault(); // Open a new window and get a handle to it var win = window.open('/test.html'); // <-- No space after "open" // Set the new window to have a load event handler $(win).on("load", function(e){ // Alert the user alert("Yay!"); }); }); }); 
  button