为什么我可以这样做:
$("button").on('click', function(){window.history.back();});
然而,当我尝试时;
$("button").on('click', window.history.back);
/*or*/ $("button").on('click', history.back);
我得到:
Uncaught TypeError: Illegal invocation
at HTMLAnchorElement.dispatch (jquery-1.12.4.js:5226)
at HTMLAnchorElement.elemData.handle (jquery-1.12.4.js:4878)
我的印象是,当没有保留的上下文时,它默认为 window 对象,这将允许我这样做吗?
最佳答案
首先,history.back()
必须以 history
作为上下文调用,如果它默认为 window
它将抛出你描述的错误。不过,这里的问题是 jQuery 使用绑定(bind)了事件监听器的元素调用处理程序。
您的第一行代码有效,因为上下文与您作为处理程序传递的匿名函数无关。 jQuery 将元素设置为上下文这一事实并不重要,因为您在其中正确调用了 history.back()
。
关于javascript - window.history.back 非法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46879422/