为什么这会在IE 11中引发异常
Why does this throw an exception in IE 11
为什么以下代码在我单击按钮的Internet Explorer 11中抛出"未指定错误"(在appendChild
行)?
<!DOCTYPE html>
<html>
<head>
<script>
function go() {
var popUp = window.open('about:blank');
popUp.document.body.appendChild(document.createElement('div'));
}
</script>
</head>
<body>
<button onclick="go()">Click Me</button>
</body>
</html>
您正在使用当前页面的文档来创建div,请尝试使用弹出窗口中的文档
popUp.document.body.appendChild(popUp.document.createElement('div'));
弹出式阻止程序通常只允许在处理用户事件(如单击)时使用window.open
。如果你屏蔽了弹出窗口,这可能会导致问题。
您需要从用户发起的事件中调用window.open,例如单击链接,该链接需要具有target="_blank"
。否则,Chrome和Firefox将阻止弹出窗口。
此外,由于popUp
在尝试将div附加到它之前没有检查null
,因此会触发该错误。如果没有弹出窗口,则无法将元素附加到它。
(我忘了这一点,Musa让我记住了,所以谢谢)IE会阻止将在不同窗口上下文中创建的任何元素附加到该元素所附加的窗口上下文中。因此,您不需要使用当前文档创建DIV节点,而是需要使用popUp的上下文创建它。
综上所述,这就是代码的外观。
<!DOCTYPE html>
<html>
<head>
<script>
function go()
{
var popUp = window.open('about:blank');
try
{
// Make sure you have a body document when creating the new window....
popUp.document.write("<html><head><title></title></head><body></body>");
popUp.document.body.appendChild(popUp.document.createElement('div'));
}
catch(e)
{
console.log(e);
}
}
</script>
</head>
<body>
<button onclick="go()">Click Me</button>
</body>
</html>
相关文章:
- 为什么这在IE中的工作方式与在Firefox中不同
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- jQuery blueimp文件上传:将N-1个文件上传到IE中的服务器
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 设置倒计时计时器,IE出现问题
- 仅在IE中,javascript中的时区名称不正确
- 在IE中加载Firebug Lite时出现问题
- 为什么我得到错误IE修剪方法是't支持
- IE中的CSS翻转动画:翻转的一面显示镜像内容
- 通过具有IE<11
- IE 在 JavaScript 中抛出了一个关于 “self = this” 的异常
- 为什么这会在IE 11中引发异常
- Signalr:JavaScript 客户端无法在 IE 上重新连接(解析错误异常)
- IE中不支持画布会引发异常
- IE中window.location.href的异常行为
- 比较javascript:IE 8异常中的日期
- 复选框和JQuery在Opera和IE中表现异常
- 如何使ie Javascript调试器在捕获异常时也暂停?
- 基本动画在非ie浏览器中异常缓慢