关于火狐浏览器event对象问题

梦一场丶 2017-04-20 09:59:05

...全文
321 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
梦一场丶 2017-04-20
  • 打赏
  • 举报
回复
我的问题不对吗。。。怎么没人回答。。。
天际的海浪 2017-04-20
  • 打赏
  • 举报
回复
引用 9 楼 cyw521 的回复:
[quote=引用 8 楼 jslang 的回复:] [quote=引用 5 楼 cyw521 的回复:] [quote=引用 2 楼 xiaojunjor 的回复:] 没看懂,window.event是IE8之前的,至于你的thisEvent为什么为undefined,你的theEvent应该是需要keydown执行一次才会有值吧,不知道你执行了吗?另外keydown是键盘事件,不是鼠标事件,不清楚你theEvent的x,y两个属性怎么来的。。。
好吧我组织语言比较差,我的问题是基本解决了。但是就是在火狐下需要这样得到event 但我很多方法都用到event了,每个方法传一下event岂不是很麻烦吗?有没有别的什么法子能写成全局那种[/quote] 是可以在事件源头函数中获取event对象,然后赋值给一个全局变量,供其它函数使用,就不用每个函数都传参了。 但是要注意每次获取的event对象都只能在触发事件的这个程序线程中使用。出了这个线程就表示事件结束了,就不能用了。 只有下次触发事件时重新获取,对全局变量重新赋值, [/quote] 我这里之前是只有一个onkeydown的事件写了event对象了,我的showInput方法是个弹出框,我又加了个onmousedown事件,老师你看这样写合理吗?[/quote] 对,每个事件的源头函数中都要重新获取event对象
xiaojunjor 2017-04-20
  • 打赏
  • 举报
回复
引用 8 楼 jslang 的回复:
[quote=引用 5 楼 cyw521 的回复:] [quote=引用 2 楼 xiaojunjor 的回复:] 没看懂,window.event是IE8之前的,至于你的thisEvent为什么为undefined,你的theEvent应该是需要keydown执行一次才会有值吧,不知道你执行了吗?另外keydown是键盘事件,不是鼠标事件,不清楚你theEvent的x,y两个属性怎么来的。。。
好吧我组织语言比较差,我的问题是基本解决了。但是就是在火狐下需要这样得到event 但我很多方法都用到event了,每个方法传一下event岂不是很麻烦吗?有没有别的什么法子能写成全局那种[/quote] 是可以在事件源头函数中获取event对象,然后赋值给一个全局变量,供其它函数使用,就不用每个函数都传参了。 但是要注意每次获取的event对象都只能在触发事件的这个程序线程中使用。出了这个线程就表示事件结束了,就不能用了。 只有下次触发事件时重新获取,对全局变量重新赋值, [/quote] 不是很明白,出了这个线程就表示事件结束了是什么意思,是事件结束了线程就结束了?还是事件结束后线程还会存在?我怎么才能知道线程什么时候结束呢?我刚才查了下,都是讲单线程和事件轮询的,没有提到线程结束后的影响。望老师讲解一下
梦一场丶 2017-04-20
  • 打赏
  • 举报
回复
引用 8 楼 jslang 的回复:
[quote=引用 5 楼 cyw521 的回复:]
[quote=引用 2 楼 xiaojunjor 的回复:]
没看懂,window.event是IE8之前的,至于你的thisEvent为什么为undefined,你的theEvent应该是需要keydown执行一次才会有值吧,不知道你执行了吗?另外keydown是键盘事件,不是鼠标事件,不清楚你theEvent的x,y两个属性怎么来的。。。

好吧我组织语言比较差,我的问题是基本解决了。但是就是在火狐下需要这样得到event
但我很多方法都用到event了,每个方法传一下event岂不是很麻烦吗?有没有别的什么法子能写成全局那种[/quote]
是可以在事件源头函数中获取event对象,然后赋值给一个全局变量,供其它函数使用,就不用每个函数都传参了。

但是要注意每次获取的event对象都只能在触发事件的这个程序线程中使用。出了这个线程就表示事件结束了,就不能用了。
只有下次触发事件时重新获取,对全局变量重新赋值,
[/quote]

我这里之前是只有一个onkeydown的事件写了event对象了,我的showInput方法是个弹出框,我又加了个onmousedown事件,老师你看这样写合理吗?
天际的海浪 2017-04-20
  • 打赏
  • 举报
回复
引用 5 楼 cyw521 的回复:
[quote=引用 2 楼 xiaojunjor 的回复:] 没看懂,window.event是IE8之前的,至于你的thisEvent为什么为undefined,你的theEvent应该是需要keydown执行一次才会有值吧,不知道你执行了吗?另外keydown是键盘事件,不是鼠标事件,不清楚你theEvent的x,y两个属性怎么来的。。。
好吧我组织语言比较差,我的问题是基本解决了。但是就是在火狐下需要这样得到event 但我很多方法都用到event了,每个方法传一下event岂不是很麻烦吗?有没有别的什么法子能写成全局那种[/quote] 是可以在事件源头函数中获取event对象,然后赋值给一个全局变量,供其它函数使用,就不用每个函数都传参了。 但是要注意每次获取的event对象都只能在触发事件的这个程序线程中使用。出了这个线程就表示事件结束了,就不能用了。 只有下次触发事件时重新获取,对全局变量重新赋值,
xiaojunjor 2017-04-20
  • 打赏
  • 举报
回复
引用 5 楼 cyw521 的回复:
[quote=引用 2 楼 xiaojunjor 的回复:] 没看懂,window.event是IE8之前的,至于你的thisEvent为什么为undefined,你的theEvent应该是需要keydown执行一次才会有值吧,不知道你执行了吗?另外keydown是键盘事件,不是鼠标事件,不清楚你theEvent的x,y两个属性怎么来的。。。
好吧我组织语言比较差,我的问题是基本解决了。但是就是在火狐下需要这样得到event 但我很多方法都用到event了,每个方法传一下event岂不是很麻烦吗?有没有别的什么法子能写成全局那种[/quote] 我刚才试了一下,定义全局变量是可以的 我觉得你可能是中间有页面重新加载的情况吧 至于@天际的海浪 老师说的我也不是很了解。。
天际的海浪 2017-04-20
  • 打赏
  • 举报
回复
是每次都要在事件所绑定的源头函数中获取, event = event || window.event只在源头函数中写就行了。其它函数不需要。 还有每次获取的event对象都只能在触发事件的这个程序线程中使用。出了这个线程就表示事件结束了,就不能用了。 只有下次触发事件时重新获取
梦一场丶 2017-04-20
  • 打赏
  • 举报
回复
引用 2 楼 xiaojunjor 的回复:
没看懂,window.event是IE8之前的,至于你的thisEvent为什么为undefined,你的theEvent应该是需要keydown执行一次才会有值吧,不知道你执行了吗?另外keydown是键盘事件,不是鼠标事件,不清楚你theEvent的x,y两个属性怎么来的。。。

好吧我组织语言比较差,我的问题是基本解决了。但是就是在火狐下需要这样得到event
但我很多方法都用到event了,每个方法传一下event岂不是很麻烦吗?有没有别的什么法子能写成全局那种
梦一场丶 2017-04-20
  • 打赏
  • 举报
回复
引用 3 楼 jslang 的回复:
现代的浏览器中event对象必须是从当前事件所绑定的源头函数中获取,然后可以传递到其它函数中使用。
如果没有触发事件或者所使用的event对象不是从当前事件中获取的就会出错。

您意思是说要在这里每次得穿一个event的吗?
天际的海浪 2017-04-20
  • 打赏
  • 举报
回复
现代的浏览器中event对象必须是从当前事件所绑定的源头函数中获取,然后可以传递到其它函数中使用。 如果没有触发事件或者所使用的event对象不是从当前事件中获取的就会出错。
xiaojunjor 2017-04-20
  • 打赏
  • 举报
回复
没看懂,window.event是IE8之前的,至于你的thisEvent为什么为undefined,你的theEvent应该是需要keydown执行一次才会有值吧,不知道你执行了吗?另外keydown是键盘事件,不是鼠标事件,不清楚你theEvent的x,y两个属性怎么来的。。。

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧