最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS無法捕獲滾動(dòng)條上的mouse up事件的原因猜想

 更新時(shí)間:2012年03月21日 11:14:29   作者:  
當(dāng)用戶鼠標(biāo)在滾動(dòng)條上按下的時(shí)候,我們可以假設(shè)他(她)正在瀏覽聊天內(nèi)容,那么這個(gè)時(shí)候好的用戶體驗(yàn)就不能讓滾動(dòng)條再自動(dòng)滾動(dòng)了
比如一個(gè)網(wǎng)頁的聊天室,滾動(dòng)條會(huì)隨著內(nèi)容的增加自動(dòng)往下滾動(dòng)。
當(dāng)用戶鼠標(biāo)在滾動(dòng)條上按下的時(shí)候,我們可以假設(shè)他(她)正在瀏覽聊天內(nèi)容,那么這個(gè)時(shí)候好的用戶體驗(yàn)就不能讓滾動(dòng)條再自動(dòng)滾動(dòng)了。
為了實(shí)現(xiàn)這個(gè)功能,可能大家首先會(huì)想到的就是mouse down 和 mouse up事件了。
可是具體實(shí)現(xiàn)的時(shí)候我們會(huì)發(fā)現(xiàn)在滾動(dòng)條上按下鼠標(biāo)左鍵再松開的時(shí)候,捕獲不到mouse up了。如下面例子
復(fù)制代碼 代碼如下:

<html>
<head>
<title></title>
<script type="text/javascript">
var captureTarget = null;
function down(obj, e) {
captureTarget = obj;
// 如果是IE可以打開注釋
// captureTarget.setCapture();
e = e ? e : window.event;
}
function up(obj,e) {
// if (captureTarget)
// captureTarget.releaseCapture();
e = e ? e : window.event;
div2.innerText = e.srcElement.tagName;
}
document.addListener = function(event, callback) {
if (!document.all)
this.addEventListener(event, callback);
else
this.attachEvent("on"+event, callback);
}
document.addListener("mouseup", function(){alert(1);});
</script>
</head>
<body >
<div style="width:200px;height:200px;overflow:scroll" onmousedown="down(this, event);">
<div style="height:500px; width:500px"></div>
</div>
</body>
</html>

保存為html格式文件,瀏覽器打開,然后在滾動(dòng)條上左鍵點(diǎn)擊試試,再在其他地方點(diǎn)擊試試。
由于沒有深入研究過W3C的文檔,這里只能猜想。
考慮到滾動(dòng)條的特性,可能瀏覽器在鼠標(biāo)按下滾動(dòng)條的時(shí)候給滾動(dòng)條setCapture了,而鼠標(biāo)松開之后給他releaseCapture,滾動(dòng)條又不屬于Dom對象,所以在鼠標(biāo)釋放之前無法捕獲mouseup事件。

相關(guān)文章

最新評(píng)論

长海县| 昌吉市| 射阳县| 长春市| 青阳县| 奈曼旗| 河北区| 洪湖市| 哈尔滨市| 长垣县| 建瓯市| 本溪| 马关县| 湛江市| 河曲县| 瑞金市| 富民县| 昭平县| 宜兰县| 彭州市| 宁明县| 贵德县| 延边| 高雄县| 长寿区| 太康县| 长春市| 吴旗县| 阳谷县| 两当县| 博爱县| 泽州县| 三穗县| 安乡县| 襄垣县| 尼木县| 嘉鱼县| 道真| 翼城县| 凤山市| 锡林浩特市|