由于 event.returnValue 弃用,jQuery 无法在 Firefox 中运行

Posted

技术标签:

【中文标题】由于 event.returnValue 弃用,jQuery 无法在 Firefox 中运行【英文标题】:jQuery not working in Firefox because of event.returnValue deprecation 【发布时间】:2014-01-11 16:17:13 【问题描述】:

我知道已经有很多关于这个主题的主题,但我还没有发现任何有用的东西。 我有一个 jQuery 代码来显示和隐藏一个 div。

在 chrome 中可以正常工作,在 Firefox 中则不行

我在 chrome 中检查了我的控制台,上面写着“不推荐使用 event.returnValue。请改用标准 event.preventDefault()。'

但我没有 event.returnValue。 该建议也不起作用(event.preventDefault)

这是我的 js:

<script>
$(document).ready(function()
    $(".aanmelden_event").click(function()
        event.preventDefault();
        $(".event_subscribe").toggleClass("uitgeklapt");
    );
);
</script>

这是我的 CSS:

.event_subscribe
    height: 0px;
    overflow:hidden;
    transition: all 2s;
    -webkit-transition: all 2s; /* Safari */

还有额外的课程:

.event_subscribe.uitgeklapt
    height: 800px;
    

我认为这是我的 jQuery 中的一些东西,带有 event.preventDefault 的东西。 我已经尝试过 e.preventdefault 和其他主题的其他一些建议的解决方案。 不幸的是,这没有用。

有人知道我在这里做错了什么吗? 我使用 jquery-1.10.2.min.js 顺便说一句。

【问题讨论】:

你还没有设置event。这可能会导致问题 您可以忽略 "event.returnValue 已弃用。请改用标准 event.preventDefault()。" 消息,它与您的问题无关(并且已修复在 jQuery 1.11 中)。 点击功能上改为function(event) IE 有一个全局事件对象,Chrome 也采用,但在 Firefox 中不存在,所以你必须在函数中添加事件参数 你需要像这样添加事件 $(".aanmelden_event").click(function(event) 【参考方案1】:

您尚未在函数中接受 event 参数:

<script>
$(document).ready(function()
    $(".aanmelden_event").click(function(event)
    // Here -----------------------------^
        event.preventDefault();
        $(".event_subscribe").toggleClass("uitgeklapt");
    );
);
</script>

因此,event 未定义,并且该代码在切换类之前抛出。您应该在列出 ReferenceError 的控制台中出现错误,因为您试图读取未声明变量的值。

它在其他一些浏览器中工作的原因是有一个全局event 对象(最初在 IE 中,然后由 Chrome 和其他一些提供以与为 IE 编写的脚本兼容)。 Firefox 不这样做,没有全局 event

【讨论】:

当没有通过'var'或函数参数定义时,事件默认为window.event。 @Bora:Firefox 中没有,也没有任何规范。 IE 可以做到这一点,Chrome(现在)也可以与最初为 IE 编写的代码兼容。 谢谢,解决方法确实是在函数之后调用(事件)。但是t没有给我你想的错误 IE 和 Chrome 不支持全局 window.event.FF。而且,是的,这确实不是 FF 遵守的标准。

以上是关于由于 event.returnValue 弃用,jQuery 无法在 Firefox 中运行的主要内容,如果未能解决你的问题,请参考以下文章

解读event.returnValue和return false

禁止网页的右键和复制功能

禁止右键点击以及复制功能

js 控制文本只能输入数字

JavaScript 中禁止用户右键菜单,复制,选取,Ctrl,Alt,Shift. 获取宽高

取消默认事件更牛逼的做法