javascript - window.history.back 非法调用

标签 javascript jquery

为什么我可以这样做:

$("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/

相关文章:

javascript - 使导航选项卡可折叠,就像 Bootstrap 中的导航栏一样

javascript - 如何使用 OCR 和 Tesseract.js 从图像中提取数字?

javascript - Img 加载和嵌套 div

php - 使用jquery修改服务器端函数

javascript - 我的 promise 是否如期实现?

javascript - 触发后如何反转css动画?

javascript - kepler.gl 是否有任何有效的 react 示例?

java - 在没有表单提交的情况下在 Spring 使用ajax jquery上传图像

javascript - 如果在上下文之外使用变量如何包含数组内容

javascript - 在 URL 栏中按下 ENTER 时如何更正 Firefox 中的#anchor 滚动位置