很想了解这种行为 - 使用Chrome
$(selector).click(window.print)
提供“非法调用”错误
$(selector).click(function() { window.print(); })
有效
请参阅http://jsfiddle.net/e2LLnj1c/
如果window.print
是一个函数,为什么我不能直接将它用作点击回调?
答案 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
函数。