【发布时间】:2013-04-26 02:49:42
【问题描述】:
我在 bestbuy.com 的 IE8 中发现了一个错误,但我似乎无法理解它为什么会发生。它也出现在 comcast.com 和 raymourflanigan.com 等网站的 IE8 中,但不在 google.com 或 godaddy.com 上。
以下代码会引发"Invalid procedure call or argument" 错误(特别是最后一行是引发错误的原因):
var p = document.createElement("p");
var holder = Element.prototype.appendChild;
holder.apply(document.body, [p]);
这很奇怪,因为我在 IE8 的其他网站上尝试过它,它就像一个魅力。我尝试使用.call 而不是.apply,甚至将原始appendChild 方法的引用存储到Element 原型上的另一个变量,但是这两种尝试都抛出了相同的错误。
这是什么原因造成的?
【问题讨论】:
-
对我来说,这在 bestbuy 网站上运行,在控制台中没有任何问题。虽然不完全是 IE8 而是 IE10 中的 IE8 模式。
-
@TomasKirda 是的,用虚拟机在 IE8 中尝试一下,让我知道它是否有效。
-
抱歉绕过这个问题,但我不明白你为什么不简单地使用 document.body.appendChild(p);
-
@JustinMeltzer:您能否提供更准确的 URL 参考以重现问题或提供jsfiddle 演示?
-
@JustinMeltzer:在 JavaScript 控制台中进行测试可能会给出不正确的结果。我想起了一本关于 JavaScript 的书,以及另一篇关于书中某些错误部分的长篇评论文章。这本书的作者写了一些关于基于 JavaScript 控制台而不是使用 JavaScript 程序的 Web 浏览器的陈述。所以书中有一些错误的信息(总体来说非常好)。您真正遇到并尝试解决的问题是什么?你需要在页面上注入一些元素吗?你写了一些浏览器插件吗?你能创建一个有同样问题的干净的 jsfiddle 演示吗?
标签: javascript internet-explorer debugging internet-explorer-8