动态创建的iframe中的window.onerror在lne 0处给出脚本错误

window.onerror in dynamically created iframe gives script error at lne 0

本文关键字:0处 lne 脚本错误 onerror 创建 iframe 中的 window 动态      更新时间:2023-09-26

我将iframe的源设置为html字符串,如下所示,让它执行我存储在内存中的html字符串。

window.sHTML = html;
iframe.src = 'javascript:parent.sHTML';

html字符串包含如下javascript代码:

window.onerror = function(a,b,c) {
  console.log(a);
  console.log(b);
  console.log(c)
  return true;
}

当iframe中发生错误时,它会记录"Script error"、"、"0",而不是给我实际的错误信息。

我知道,当所讨论的iframe是跨域的时,这种情况可能会发生:Cryptic"脚本错误"Chrome和Firefox 中的Javascript报告

然而,iframe并不是跨域的,它只是我动态创建的。有没有办法让window.onerror将其视为非跨域iframe,这样我就可以从window.onerrror中访问正确的错误信息?

如果需要用HTML字符串动态填充iframe内容,document.write可能会起作用:

var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
iframe.contentDocument.open();
iframe.contentDocument.write(yourHTMLString);
iframe.contentDocument.close();

参考