火狐下同时有onmousedown ondblclick事件,双击无效
功能是实现鼠标拖拉,在ie下没有问题,但在火狐下同时有onmousedownondblclick事件,双击无效.div里设置了onmousedown事件后ondblcli...
功能是实现鼠标拖拉,在ie下没有问题,但在火狐下同时有onmousedown ondblclick事件,双击无效.div里设置了onmousedown事件后ondblclick就无法执行了,去掉onmousedown事件后双击则出来预想的效果.
这个问题困扰了很久,尝试过各种办法都不行,请问有没有设置事件优先级的方法?我要的效果是onmousedown拖动等级为最小的,双击打开窗口事件等级为最高(即双击的时候总能起效果)
我要的是在js里面设置,这个跟浏览器本身没有关系的,遨游的内核是ie,ie下没问题遨游下也没问题.
我已经判断不同浏览器执行不同代码了,关键是在火狐下运行的代码不行阿.网上拖拉的代码是很多但都解决不了我的问题.
microAllen分析得很不错,但是ondragstart、ondrag和ondragend 只有在ie下才可以阿,火狐下没有这些事件的.
我现在的移动是在onmousedown时创建一个虚框,onmousemove移动虚框,onmouseup移动div并清除事件.问题就是无论如何都触发不了双击事件.
全局变量还是解决不了问题,因为一直获不到双击事件,不能在获得双击事件时取消onmousedown事件.按照逻辑双击事件应该是在最后触发,但我的问题是双击事件一直都没有被触发过! 展开
这个问题困扰了很久,尝试过各种办法都不行,请问有没有设置事件优先级的方法?我要的效果是onmousedown拖动等级为最小的,双击打开窗口事件等级为最高(即双击的时候总能起效果)
我要的是在js里面设置,这个跟浏览器本身没有关系的,遨游的内核是ie,ie下没问题遨游下也没问题.
我已经判断不同浏览器执行不同代码了,关键是在火狐下运行的代码不行阿.网上拖拉的代码是很多但都解决不了我的问题.
microAllen分析得很不错,但是ondragstart、ondrag和ondragend 只有在ie下才可以阿,火狐下没有这些事件的.
我现在的移动是在onmousedown时创建一个虚框,onmousemove移动虚框,onmouseup移动div并清除事件.问题就是无论如何都触发不了双击事件.
全局变量还是解决不了问题,因为一直获不到双击事件,不能在获得双击事件时取消onmousedown事件.按照逻辑双击事件应该是在最后触发,但我的问题是双击事件一直都没有被触发过! 展开
5个回答
展开全部
在IE中,当鼠标单击一下分别触发事件如下:
mousedown
mouseup
click
如果双击下一共触发如下事件:
mousedown
mouseup
click
mouseup
dblclick
但是在firefox中,单击所触发的事件和IE是一样的
但是双击时触发的事件有所不同:firefox中双击实际上触发事件如下:
mousedown
mouseup
click
mousedown
mouseup
click
dblclick
两者比较下就可以看出浏览器不同所造成的差别。然后根据差别触发相应事件所做的操作进行一定的修改。
而且鼠标拖动时触发的时候不是onmousedown而是ondragstart、ondrag和ondragend 你可以把onmousedown所执行的方法放在ondragstart执行,这样的话就不会出现onmousedown和ondblclick之间的冲突,你双击而不拖动的话就不会去触发拖动相对应的ondragstart事件
目前只有windows上的IE支持上面所说的系统拖动,mozilla在基于XUL的页面上支持系统拖动,关于楼主要说的设置事件触发的优先级,本人才疏学浅没听到过,不过如果能够准确的控制onmousedown事件的触发和ondblclick事件的触发时刻,可以在js中定义个全局的布尔变量,然后通过首先对该布尔变量的判断来决定当你想要触发ondblclick事件的时候控制onmousedown事件相对应的方法不被执行。这样的话不知道能不能解决在dblclick事件触发前mousedown事件总是先触发执行的冲突。
楼主能不能告诉双击事件要做的操作是什么?
mousedown
mouseup
click
如果双击下一共触发如下事件:
mousedown
mouseup
click
mouseup
dblclick
但是在firefox中,单击所触发的事件和IE是一样的
但是双击时触发的事件有所不同:firefox中双击实际上触发事件如下:
mousedown
mouseup
click
mousedown
mouseup
click
dblclick
两者比较下就可以看出浏览器不同所造成的差别。然后根据差别触发相应事件所做的操作进行一定的修改。
而且鼠标拖动时触发的时候不是onmousedown而是ondragstart、ondrag和ondragend 你可以把onmousedown所执行的方法放在ondragstart执行,这样的话就不会出现onmousedown和ondblclick之间的冲突,你双击而不拖动的话就不会去触发拖动相对应的ondragstart事件
目前只有windows上的IE支持上面所说的系统拖动,mozilla在基于XUL的页面上支持系统拖动,关于楼主要说的设置事件触发的优先级,本人才疏学浅没听到过,不过如果能够准确的控制onmousedown事件的触发和ondblclick事件的触发时刻,可以在js中定义个全局的布尔变量,然后通过首先对该布尔变量的判断来决定当你想要触发ondblclick事件的时候控制onmousedown事件相对应的方法不被执行。这样的话不知道能不能解决在dblclick事件触发前mousedown事件总是先触发执行的冲突。
楼主能不能告诉双击事件要做的操作是什么?
展开全部
您好!很高兴为您答疑!
解决方法:
思路: 在 onmousedown 用一个 setTimeout 延迟处理, 比如说在100毫秒里没有第二次点击则执行 onmousedown 否则执 ondblclick.
例子:
<a href="#" onclick="window.setTimeout('clickFun();',400)" ondblclick="dblclickFun();" >click</a>
<script>
var isDblClick=false;
function clickFun()
{
if(!isDblClick){
alert("click");
}else{
isDblClick=false;
}
}
function dblclickFun()
{
isDblClick=true;
alert("ondblclick");
}
您可以在火狐社区了解更多内容。希望我的回答对您有所帮助,如有疑问,欢迎继续在本平台咨询。
解决方法:
思路: 在 onmousedown 用一个 setTimeout 延迟处理, 比如说在100毫秒里没有第二次点击则执行 onmousedown 否则执 ondblclick.
例子:
<a href="#" onclick="window.setTimeout('clickFun();',400)" ondblclick="dblclickFun();" >click</a>
<script>
var isDblClick=false;
function clickFun()
{
if(!isDblClick){
alert("click");
}else{
isDblClick=false;
}
}
function dblclickFun()
{
isDblClick=true;
alert("ondblclick");
}
您可以在火狐社区了解更多内容。希望我的回答对您有所帮助,如有疑问,欢迎继续在本平台咨询。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两外可以判断浏览器的类型,不同的浏览器执行不同的javascript代码! 基本上搜索一下,有现成的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
装个遨游试试 如果遨游行,证明是火狐插件问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是可以在浏览器里直接设置优先级的吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询