【发布时间】:2011-10-15 23:27:57
【问题描述】:
好的,我在网上找了很多,但找不到答案。
我可以预见浏览器之间的 CSS 差异,但 JavaScript 也存在差异?
那么为什么这在 IE8 中有效:
window.print(); // works
但是当我将window.print 传递给一个函数并调用它时,它在 IE8 中不起作用(在 IE9 中起作用):
function callIt(f){
f.call();
};
callIt(window.print);
这是一个已知问题吗?
编辑
好的,它不起作用意味着它会简单地忽略它,没有javascript错误或任何东西。
对不起,它给出了这个错误:
Object doesn't support this property or method
编辑 2
我需要使用call 或apply,因为我需要传递上下文。我正在尝试创建一个可以传递函数的类,并且可以通过传递上下文或参数来调用它。不要告诉我使用f() 这不是答案,因为它不能解决我的问题。 问题在于call 和apply。
【问题讨论】:
-
你看到了什么行为?错误控制台有错误吗?
-
也许我误解了你,但是是的,javascript 有很多跨浏览器的差异。检查此线程:stackoverflow.com/questions/565641/… 或谷歌了解更多信息。这就是为什么像 jQuery 这样的 JS 框架如此受欢迎)
-
它在 IE8 中给我一个 javascript 错误“对象不支持此属性或方法”
-
没错!在我的实际代码中,它给了我,但使用它,它不是。
-
@Aliostad @XzKto 这不是 JavaScript 的区别。 ECMAScript 规范不涵盖宿主对象的行为(
window和print是)。浏览器可以任意定义其宿主对象的行为——JavaScript(语言)与此无关。这是 IE 的对象模型的问题,不是 JavaScript 的问题。
标签: javascript printing window call apply