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

时间:2014-10-06 13:41:18

标签: javascript jquery

很想了解这种行为 - 使用Chrome

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

$(selector).click(function() { window.print(); })有效

请参阅http://jsfiddle.net/e2LLnj1c/

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

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

JQuery在函数对象上使用apply方法调用处理函数,并将当前元素对象作为this对象参数传递,导致问题,因为this应该是窗口对象,以防万一print函数。