javascript對點選事件和拖動事件的區分
1.專案中,為了更好的服務使用者,經常會設計一個便捷的通道,這個通道一般都是“懸浮”的。
由於是懸浮的,那麼就會考慮使用者會出現哪幾種可能的操作,一個是直接點選,另外一種就是在螢幕上先拖動幾下,然後再點選。
那麼為了完美的實現這個需求,那麼該怎麼辦呢?
最重要的就是要區分點選事件和拖動事件。
我們都知道,點選事件是被點選的物件可看做是靜止不動的,而拖動事件的物件很明顯是移動的。
那麼思路就應該是先判斷事件物件是否有移動的現象,
但是由於不管是在點選事件和拖動事件,其都有一個滑鼠按下的一個過程和一個鬆開的過程,只不過拖動事件多了一個拖動動作。
那麼完整的思路應是這樣的:
第一:先寫出滑鼠按下的函式;
第二:編寫物件是否被拖動的函式;
第三:判斷物件是否相對原先位置產生了位移;
第四:編寫滑鼠鬆開之後的程式碼;
完整程式碼如下:
var timmerHandle = null; //先設定一個定時器處理;
var isDrag = false; //宣告拖動的預設狀態是:否
//建立目標被點選(滑鼠按下)的函式
function entranceDivDown (){
console.log(“mouse down.”);
isDrag = false;
//延遲100ms
timmerHandle = setTimeout(setDragTrue,200);
}
function setDragTrue (){
isDrag = true;
}
//建立目標被拖動的函式
function entranceDivMove (){
//可以使用isDrag來判斷是移動還是拖動
var entrance = document.getElementById(“entrance”);
entrance.onmousedown = function(ev){
var oevent = ev || event;
var distanceX = oevent.clientX – entrance.offsetLeft;
var distanceY = oevent.clientY – entrance.offsetTop;
document.onmousemove = function(ev){
var oevent = ev || event;
entrance.style.left = oevent.clientX – distanceX + `px`;
entrance.style.top = oevent.clientY – distanceY + `px`;
};
document.onmouseup = function(ev){
document.onmousemove = null;
document.onmouseup = null;
};
};
}
//建立目標滑鼠釋放的函式
function entranceDivUp (){
if (!isDrag){
//先把doMouseDownTimmer清除,不然200毫秒後setGragTrue方法還是會被呼叫的
clearTimeout(timmerHandle);
console.log(“mouse up.”);
activity_id = sessionStorage.getItem(`activity_id`); //獲取活動id
var url = globalConfig.pre_api_url + “/wall/index.php?activity_id=” + activity_id; //活動路徑
window.open(url);
}else{
isDrag = false;
console.log(“draging over.”);
}
}
感謝閱讀
喜歡看小編文章的點個訂閱或者喜歡!小編每天都會跟大家分享文章,也會給大家提供web前端學習資料。
相關文章
- javascript–BOM的onload事件和onunload事件JavaScript事件
- databinding的點選事件事件
- 點選事件的委派事件
- Javascript中的事件物件和事件型別JavaScript事件物件型別
- RecyclerView-->點選和長按事件View事件
- 移動端點透事件--阻止滾動事件事件
- 如何使用 JavaScript 程式碼建立虛擬滑鼠點選事件JavaScript事件
- 【FAQ】關於JavaScript版本的華為地圖服務Map的點選事件與Marker的點選事件存在衝突的解決方案JavaScript地圖事件
- JavaScript事件JavaScript事件
- JavaScript 事件JavaScript事件
- 移動端點選事件延遲的誕生消亡史事件
- iOS全埋點解決方案-UITableView和UICollectionView點選事件iOSUIView事件
- tabbar凸起點選事件處理tabBar事件
- echarts 工具條點選事件控制Echarts事件
- MxDraw雲圖點選事件教程事件
- 3D地圖的定時高亮和點選事件3D地圖事件
- JQuery4:滑鼠事件和滾動事件jQuery事件
- JavaScript滑鼠中鍵滾動事件JavaScript事件
- 事件分發和處理事件
- 詳談javascript和node的事件迴圈JavaScript事件
- JavaScript 中的閉包和事件委託JavaScript事件
- 移動端VUE點選、滑動和長按等事件處理(自定義指令)Vue事件
- JavaScript resize 事件JavaScript事件
- JavaScript mouseup 事件JavaScript事件
- JavaScript mouseover 事件JavaScript事件
- JavaScript mousedown 事件JavaScript事件
- JavaScript focus 事件JavaScript事件
- JavaScript reset 事件JavaScript事件
- JavaScript blur 事件JavaScript事件
- JavaScript invalid 事件JavaScript事件
- JavaScript input 事件JavaScript事件
- JavaScript keyup 事件JavaScript事件
- JavaScript 事件冒泡JavaScript事件
- JavaScript submit 事件JavaScriptMIT事件
- JavaScript change 事件JavaScript事件
- JavaScript mouseleave 事件JavaScript事件
- JavaScript mousemove 事件JavaScript事件
- JavaScript keypress 事件JavaScript事件