这两个事件很常见
了解这两个事件的区别但是实际并没有使用到这两个事件的区别去做一些操作
通常使用onclick的时候也可以使用onmousedown使用onclick的时候更多一些
今天碰到了非使用onmousedown不可的时候故特此记录
先说一下区别onclick是在鼠标点击弹起之后触发的事件onmousedown是在鼠标按下之后触发的事件
简单的说onclick = onmousedown + onmouseup;
如果在某个地方按下鼠标后移开鼠标在另外一个地方松开鼠标会触发onmousedown事件但是onclick事件却不会被触发
我们今天要实现的功能是点击a标签切换到另外一个页面在原页面关闭之前需要触发一个函数不是windowunload
之前使用的是onclick事件IE中测试无问题但是在FF中测试发现在页面被销毁之前还没有来得及执行这个函数
如果使用onmousedown事件虽然也没有办法保证该函数一定被执行但是为该函数的执行争取了一定的时间因为跳转是在鼠标弹起之后执行的
解决办法一onclick="return test()"当且仅当当该函数返回true之后才执行跳转这样导致了一个新的问题如果我们在test函数中执行了多线程程序或者新开线程的程序后会先返回true跳转新开的线程就没有被执行如下面的函数
代码如下:
function test()
{
(new Image())src="html";
windowopen("html""_new");
//alert("ok");
return true;
}
我在html文件中设置了当html并没有被完全渲染结束时跳转已经执行了new image函数也没有保证已经被执行了
在使用单一线程执行函数时可使用return test()这种方法
解决办法二估计一下test函数的多线程函数的最长执行速度加入执行时间为不在a标签中使用跳转在test函数中使用setTimeout(locationhref="html")来执行跳转