欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js函數(shù)中onmousedown和onclick的區(qū)別和聯(lián)系探討

 更新時間:2013年05月19日 15:20:32   作者:  
了解這兩個事件的區(qū)別,但是實(shí)際并沒有使用到這兩個事件的區(qū)別去做一些操作,通常使用onclick的時候也可以使用onmousedown,使用onclick的時候更多一些
這兩個事件很常見。
了解這兩個事件的區(qū)別,但是實(shí)際并沒有使用到這兩個事件的區(qū)別去做一些操作。
通常使用onclick的時候也可以使用onmousedown,使用onclick的時候更多一些。
今天碰到了非使用onmousedown不可的時候,故特此記錄。

先說一下區(qū)別:onclick是在鼠標(biāo)點(diǎn)擊彈起之后觸發(fā)的事件。onmousedown是在鼠標(biāo)按下之后觸發(fā)的事件。
簡單的說onclick = onmousedown + onmouseup;
如果在某個地方按下鼠標(biāo)后移開鼠標(biāo)在另外一個地方松開鼠標(biāo)會觸發(fā)onmousedown事件,但是onclick事件卻不會被觸發(fā)。
我們今天要實(shí)現(xiàn)的功能是點(diǎn)擊a標(biāo)簽,切換到另外一個頁面,在原頁面關(guān)閉之前需要觸發(fā)一個函數(shù)。不是windowunload。
之前使用的是onclick事件,IE中測試無問題,但是在FF中測試發(fā)現(xiàn),在頁面被銷毀之前還沒有來得及執(zhí)行這個函數(shù)。
如果使用onmousedown事件,雖然也沒有辦法保證該函數(shù)一定被執(zhí)行,但是為該函數(shù)的執(zhí)行爭取了一定的時間,因為跳轉(zhuǎn)是在鼠標(biāo)彈起之后執(zhí)行的。

解決辦法一:onclick="return test()",當(dāng)且僅當(dāng)當(dāng)該函數(shù)返回true之后才執(zhí)行跳轉(zhuǎn)。這樣導(dǎo)致了一個新的問題。如果我們在test函數(shù)中執(zhí)行了多線程程序或者新開線程的程序后,會先返回true,跳轉(zhuǎn),新開的線程就沒有被執(zhí)行。如下面的函數(shù):
復(fù)制代碼 代碼如下:

function test()
{
(new Image()).src="1.html";
window.open("1.html","_new");
//alert("ok");
return true;
}

我在1.html文件中設(shè)置了<body onload="javascript:alert('ok')">,當(dāng)1.html并沒有被完全渲染結(jié)束時,跳轉(zhuǎn)已經(jīng)執(zhí)行了。new image函數(shù)也沒有保證已經(jīng)被執(zhí)行了。
在使用單一線程執(zhí)行函數(shù)時,可使用return test()這種方法。

解決辦法二:估計一下test函數(shù)的多線程函數(shù)的最長執(zhí)行速度,加入執(zhí)行時間為100.不在a標(biāo)簽中使用跳轉(zhuǎn)。在test函數(shù)中使用setTimeout(location.href="1.html",100)來執(zhí)行跳轉(zhuǎn)。

相關(guān)文章

  • jquery和javascript的區(qū)別(常用方法比較)

    jquery和javascript的區(qū)別(常用方法比較)

    jquery 就對javascript的一個擴(kuò)展,封裝,就是讓javascript更好用,更簡單,為了說明區(qū)別,下面與大家分享下JavaScript 與JQuery 常用方法比較
    2013-07-07
  • javascript異步編程的4種方法

    javascript異步編程的4種方法

    本文總結(jié)了"異步模式"編程的4種方法,理解它們可以讓你寫出結(jié)構(gòu)更合理、性能更出色、維護(hù)更方便的Javascript程序
    2014-02-02
  • javascript 中的事件委托詳解

    javascript 中的事件委托詳解

    這篇文章主要介紹了javascript 中的事件委托詳解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • JS?JSON.stringify()的5個使用場景詳解

    JS?JSON.stringify()的5個使用場景詳解

    JSON.stringify()方法用于將一個值轉(zhuǎn)為JSON字符串,該字符串符合JSON格式,并且可以被JSON.parse()方法還原,下面這篇文章主要給大家介紹了關(guān)于JS?JSON.stringify()的5使用場景,需要的朋友可以參考下
    2023-01-01
  • 菜鳥學(xué)習(xí)JavaScript小實(shí)驗之函數(shù)引用

    菜鳥學(xué)習(xí)JavaScript小實(shí)驗之函數(shù)引用

    由于變量b中保存的是函數(shù)的引用,當(dāng)函數(shù)變化時,b也隨時變化,且不管函數(shù)出現(xiàn)的先后順序。兩次alert(b),雖然位置不一樣,但是內(nèi)容相同。
    2010-11-11
  • JavaScript中對DOM節(jié)點(diǎn)的訪問、創(chuàng)建、修改、刪除

    JavaScript中對DOM節(jié)點(diǎn)的訪問、創(chuàng)建、修改、刪除

    這篇文章主要介紹了JavaScript中對DOM節(jié)點(diǎn)的訪問、創(chuàng)建、修改、刪除,是JavaScript入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-11-11
  • JavaScript中循環(huán)遍歷Array與Map的方法小結(jié)

    JavaScript中循環(huán)遍歷Array與Map的方法小結(jié)

    這篇文章主要介紹了JavaScript中循環(huán)遍歷Array與Map的各種方法,利用的都是js入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-03-03
  • 不懂JavaScript應(yīng)該怎樣學(xué)

    不懂JavaScript應(yīng)該怎樣學(xué)

    文是JavaScript庫Mootools的入門性介紹文章,詳細(xì)介紹了在網(wǎng)上能找到的比較好的學(xué)習(xí)HTML,CSS,JavaScript入門知識的資源以及隨手參考的地方。文中介紹的從零入手學(xué)習(xí)JavaScript編程的過程很有參考價值。
    2008-04-04
  • js oncontextmenu事件使用詳解

    js oncontextmenu事件使用詳解

    這篇文章主要介紹了js oncontextmenu事件使用詳解,需要的朋友可以參考下
    2017-03-03
  • js setTimeout opener的用法示例詳解

    js setTimeout opener的用法示例詳解

    opener: 指parent表示父窗口,比如一個A頁面利用iframe或frame調(diào)用B頁面,那么A頁面所在窗口就是B頁面的parent,下面為大家介紹下其詳細(xì)的使用方法,感興趣的朋友可以參考下
    2013-10-10

最新評論