window.print作为直接的jquery回调-非法调用

wrs*_*der 2 javascript jquery

好奇了解这种行为-使用Chrome

$(selector).click(window.print) 给出“非法调用”错误

$(selector).click(function() { window.print(); }) 作品

参见http://jsfiddle.net/e2LLnj1c/

如果window.print是一个函数,为什么不能直接将其用作点击回调?

Tho*_*nes 5

this回调的变量很可能是DOM节点本身,而window.print依赖于它window本身。

您可以传入window.print.bind(window)以确保this正确设置了变量。

JsFiddle示例:http : //jsfiddle.net/tomprogramming/38yn9kq5/

  • 这是对的。虽然“ window.print”是一个函数,但是对于其内部实现而言,至关重要的是调用上下文(“ this”内部)应该是适当的对象,即“ window”全局对象。 (2认同)