不過setCapture不支持鍵盤事件, 只能捕獲以下鼠標事件:onmousedown、onmouseup、onmousemove、onclick、ondblclick、onmouseover和onmouseout。
程序中主要是要捕獲onmousemove和onmouseup事件。
msdn的介紹中還說到setCapture有一個bool參數,用來設置在容器內的鼠標事件是否都被容器捕獲。
參數為true時(默認)容器會捕獲容器內所有對象的鼠標事件,即容器內的對象不會觸發鼠標事件(跟容器外的對象一樣);
參數為false時容器不會捕獲容器內對象的鼠標事件,即容器內的對象可以正常地觸發事件和取消冒泡。
object.setCapture() 當一個object的被 setCapture 後,他的方法將會被繼承到整個文檔進行捕獲。當不需要把方法繼承到整個文檔捕獲時,要用 object.releaseCapture() 來釋放.
Mozilla 也有類似的功能,方法稍微不同
window.captureEvents(Event.eventType)
window.releaseEvents(Event.eventType)
事例:
復制代碼 代碼如下:
<HTML>
<BODY>
<div id="m_Div" style="width:200px;height:200px;border:1px solid #b0bca5;padding:2px" onclick="alert('Hello')">點一下IE的菜單或者按鈕看看:)
又或者IE窗口外的地方</div>
<SCRIPT LANGUAGE="JavaScript">
<!--
document.getElementById("m_Div").setCapture()
//-->
</SCRIPT>
</BODY>
</HTML>
在調用setCapture()後, 捕捉到事件後自動釋放, 如果在連續對事件捕捉,需要在調用的事件裡再次執行setCaptuer()