JavaScript调用并应用于Internet Explorer 8(和7)中的window.print

Ali*_*tad 4 javascript printing window call apply

好的,我在网上看了很多,但找不到答案.

我可以期待浏览器之间的CSS差异,但也存在JavaScript差异?

那么为什么这在IE8中有效:

window.print(); // works
Run Code Online (Sandbox Code Playgroud)

但是当我传递window.print给函数并调用它时,它在IE8中不起作用(在IE9中工作):

function callIt(f){
    f.call();
};



callIt(window.print);
Run Code Online (Sandbox Code Playgroud)

这是一个已知的问题吗?


编辑

好吧它不起作用意味着它会简单地忽略它,没有javascript错误或任何东西.

抱歉,它出现此错误:

   Object doesn't support this property or method
Run Code Online (Sandbox Code Playgroud)

编辑2

我需要使用callapply因为我需要传递上下文.我正在尝试创建一个可以传递函数的类,它可以调用它来传递上下文或参数.不要告诉我使用f() 这不是一个答案,因为它不能解决我的问题.问题是callapply.

小智 10

似乎window.*函数是独立的类型而不是IE <9中的用户创建的函数.因此,它们没有得到任何Function.prototype.*.你会看到的

typeof alert === 'object'

function a(){}

typeof a === 'function'
Run Code Online (Sandbox Code Playgroud)

任何window.*功能都会发生这种情况.仅限IE <9.WTG Miscrosoft.

不过你可以试试

Function.prototype.call.call(window.print)
Run Code Online (Sandbox Code Playgroud)

看看它是否适合你.