javascript - 在弹出窗口上设置 onerror 处理程序

标签 javascript error-handling popup

我想将回调传递到显示弹出窗口的函数中(为了方便起见,我在示例中将其设置为 iframe)。但是,当从对新打开的窗口的引用设置它时,我无法让 window.onerror 工作。我究竟做错了什么? (在 Chrome 中测试)

嵌入式脚本运行器无法工作,所以这里有一个 fiddle http://jsfiddle.net/mendesjuan/PWSDF/35/

HTML

<button id="btn">New Window</button>
<button id="btn2">New Window 2</button>
<iframe name="popme"></iframe>

JavaScript

// Works
document.getElementById('btn').addEventListener('click', function () {
    var win = window.open('', 'popme');
    var doc = win.document;
    doc.open();
    doc.write(
        "<html>" +
        "<head>" +
        "<scr" + "ipt>window.onerror = function() { alert(1); return true}</scr" + "ipt>" +
        "<scr" + "ipt>badCall1()</scr" + "ipt>" +
        "</head>" +
        "<body>Nothing really</body>" +
        "</html>"

    );
    doc.close();
});
// Doesn't work
document.getElementById('btn2').addEventListener('click', function () {
    var win = window.open('', 'popme');
    var doc = win.document;
    win.onerror = function () {
        alert(1);
        return true;
    }
    doc.open();
    doc.write(
        "<html>" +
        "<head>" +
        "<scr" + "ipt>badCall2()</scr" + "ipt>" +
        "</head>" +
        "<body>Nothing really 2</body>" +
        "</html>");
    doc.close()
});

最佳答案

打开文档后附加onerror处理程序似乎有效。但是,我不确定为什么会这样。

JSBin(仅在 Chrome 中测试):http://jsbin.com/seveniqubi/1/edit?html,js,output

document.getElementById('btn2').addEventListener('click', function(e) {
  var win = window.open('', 'popme');
  var doc = win.document;

  doc.open();

  win.onerror = function(message, url, line) {
    alert(message);
    return true;
  };

  doc.write(
    "<html>"+"<head>" +
    "<scr" + "ipt>badCall2()</scr" + "ipt>" +"</head>" +
    "<body>Nothing really 2</body>" + "</html>");

  doc.close();                                                             
});

关于javascript - 在弹出窗口上设置 onerror 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26811956/

相关文章:

android - 如何使用带有 fragment 的操作栏选项卡创建 ListView ?

swift - 在表格 View 单元格中显示弹出窗口

jquery - 出现错误 : Object doesn't support property or method 'assign'

.net - 确定相对于目标的弹出位置

javascript - 以编程方式修复 IE 中的浏览器模式

javascript - 为什么 watch 任务在 gulp 中终止已经使用 gulp-plumber 插件?

JavaScript 二维碰撞异常

java - Java 错误,但没有显示错误位置,我该怎么办?

javascript - JavaScript 中用于选择的类是否应该在 CSS 文件中定义?

ruby-on-rails - 使用 Ruby 正确处理 Stripe 错误和异常以实现一次性收费