由于 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