成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

識別滾動條上的mousedown mouseup事件

xiaokai / 1822人閱讀

摘要:當(dāng)用戶鼠標(biāo)在滾動條上按下的時候,我們可以假設(shè)他她正在瀏覽網(wǎng)頁內(nèi)容,那么這個時候好的用戶體驗就不能讓滾動條再自動滾動了。為了實現(xiàn)這個功能,可能大家首先會想到的就是和事件了。

轉(zhuǎn)載請注明出處:https://github.com/xinglie/xi...

網(wǎng)頁內(nèi)容區(qū)域自動滾動,滾動條會隨著內(nèi)容的增加自動往下滾動。

當(dāng)用戶鼠標(biāo)在滾動條上按下的時候,我們可以假設(shè)他(她)正在瀏覽網(wǎng)頁內(nèi)容,那么這個時候好的用戶體驗就不能讓滾動條再自動滾動了。

為了實現(xiàn)這個功能,可能大家首先會想到的就是mouse down 和 mouse up事件了。

嗯,我們可以利用它,我們還要識別滾動條的寬度及所在位置,于是我們有了這樣的一個方法:

var getScrollbar=function(){
    var e=document.documentElement,
        ow=e.offsetWidth,
        cw=e.clientWidth;

    return {//需要識別滾動條是在左面還是右面,目前沒做處理,簡單示例
        left:cw,
        width:ow-cw
    }
}

getScrollbar獲取滾動條左側(cè)位置,及滾動條的寬度,接下來我們要注冊onmousedown事件,我們注冊在document上

var isOnScrollbar;
document.onmousedown=function(e){
    e=e||window.event;
    var bar=getScrollbar();
    if(e.clientX>bar.left){

        isOnScrollbar=true;
        document.title="mousedown on scroll bar";
    }
}

我們發(fā)現(xiàn)這段代碼可以在IE FF下正常運(yùn)行,接下來注冊mouseup

document.onmouseup=function(e){
    if(isOnScrollbar){
        document.title="mousedup";
    }else{
        document.title="mousedup on body";
    }
    isOnScrollbar=false;
}

發(fā)現(xiàn)除IE外其它瀏覽器都可以正常工作,IE不行,嘗試跟蹤mousemove事件:

document.onmousemove=function(){
    window.status=new Date().getTime();
}

發(fā)現(xiàn)鼠標(biāo)在滾動條上按下后移動,mousemove是不觸發(fā)的,而其它瀏覽器是正常觸發(fā),猜測IE在拖動滾動條開始時

setCapture了,導(dǎo)致其它事件不能正常運(yùn)行,不過發(fā)現(xiàn)鼠標(biāo)在mouseup后,mousemove會觸發(fā)一次,我們可以利用這個

來hack IE下的問題

if(document.attachEvent){
    document.onmousemove=function(){
        if(isOnScrollbar){
            isOnScrollbar=false;
            document.title="mousedup";
        }
    }
}

最終的測試如下:




    aa
    






本例只是拋磚引玉,只提供一個簡單的思路,沒有嚴(yán)格的測試,也許在其它瀏覽器下有問題,歡迎留言交流

歡迎試用magix,區(qū)塊化管理利器 https://github.com/thx/magix/...
magix https://github.com/thx/magix
歡迎star與fork

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/90858.html

相關(guān)文章

  • JavaScript 事件——“事件類型”中“焦點(diǎn)、鼠標(biāo)和滾輪事件”的注意要點(diǎn)

    摘要:焦點(diǎn)事件一般利用這些事件與方法和屬性配合。此外,支持一個名為的類似事件,也是在鼠標(biāo)滾動滾輪時除法。 焦點(diǎn)事件 一般利用這些事件與document.hasFocus()方法和document.activeElement屬性配合。主要有: blur:元素失去焦點(diǎn),不會冒泡; DOMFocusIn:同HTML事件focus,于DOM3遭廢棄,選用focusin; DOMFocusOut:同...

    clasnake 評論0 收藏0
  • JS事件淺析

    摘要:事件有很多,有我用過的有我沒用過的,今天我想分析一番。阻止默認(rèn)事件,表單提交,標(biāo)簽。觸發(fā)事件的元素,事件委托會用到。在文本插入文本框之前會觸發(fā)事件。 一個網(wǎng)頁由三層組成(html 結(jié)構(gòu),js 行為,css 表現(xiàn)),一切的東西其實都建立在html上,html里面的dom提供了一些事件,然后通過js封裝,我們可以用js去調(diào)用dom上的事件。事件有很多,有我用過的有我沒用過的,今天我想分析一...

    klivitamJ 評論0 收藏0
  • JS事件淺析

    摘要:事件有很多,有我用過的有我沒用過的,今天我想分析一番。阻止默認(rèn)事件,表單提交,標(biāo)簽。觸發(fā)事件的元素,事件委托會用到。在文本插入文本框之前會觸發(fā)事件。 一個網(wǎng)頁由三層組成(html 結(jié)構(gòu),js 行為,css 表現(xiàn)),一切的東西其實都建立在html上,html里面的dom提供了一些事件,然后通過js封裝,我們可以用js去調(diào)用dom上的事件。事件有很多,有我用過的有我沒用過的,今天我想分析一...

    youkede 評論0 收藏0
  • JavaScript 編程精解 中文第三版 十五、處理事件

    摘要:事件與節(jié)點(diǎn)每個瀏覽器事件處理器被注冊在上下文中。事件對象雖然目前為止我們忽略了它,事件處理器函數(shù)作為對象傳遞事件對象。若事件處理器不希望執(zhí)行默認(rèn)行為通常是因為已經(jīng)處理了該事件,會調(diào)用事件對象的方法。 來源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項目原文:Handling Events 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 自豪地采用谷歌翻譯 部分...

    Clect 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<