[英]Cancel IE9 touch scroll event and invoke Mousemove, possible?
在裝有 IE9 和多點觸控屏幕(如 HP TouchSmart)的 Windows 7 計算機上,如果您在高度足以具有滾動條的頁面上觸摸屏幕並向上或向下移動手指,頁面會滾動。 這似乎不會觸發任何mousemove
事件。 如果您觸摸屏幕並最初向左或向右移動而不是向上和向下移動,則會觸發mousemouse
事件。
我不想取消此滾動並導致瀏覽器調用正常的mousemove
事件。 這可能嗎?
編輯:IE9 中似乎沒有觸摸事件 IE9 是否支持 Windows 7 上的觸摸事件?
編輯 2:關於此的其他幾個興趣點。 首先是瀏覽器經常在手勢觸發滾動時觸發mousewheel
事件,這通常可以被捕獲和取消。 其次,在這種特殊情況下,您可以使用此 hack $(document).bind('mousedown mouseup click dblclick', function (e) { });
防止在 IE9 上滾動$(document).bind('mousedown mouseup click dblclick', function (e) { });
正如黑客有時所做的那樣,對我來說沒有任何意義 - 使用更少的事件綁定可能是可能的,但我無法很好地訪問設備來輕松測試。
在花了一些時間測試了抑制默認事件響應的各種方法之后,我不知道如何抑制滾動事件。 但是,您應該能夠從滾動事件處理程序中觸發 mousemove 事件。
window.onscroll = function(e){
element.onmousemove();
}
//jquery
$(window).scroll(function(e){ element.mousemove(); } );
一個原始的例子。
我認為您可以嘗試防止自動滾動的兩件事:將溢出(或溢出-y)設置為隱藏在您的正文元素上或作為您的 onscroll 處理程序的一部分,嘗試滾動回您的原點。 將 body 的溢出設置為 hidden 會阻止滾動並隱藏滾動條,但我不確定這是你想要的。
嘗試觸摸事件而不是鼠標事件。
我在 iPad 上遇到了同樣的問題。 我不得不添加一個 e.preventDefault(); 到 touchmove 事件。 我只對跟蹤交互的 div 執行此操作,而不是對整個頁面執行此操作。
element.ontouchmove = function(e){ e.preventDefault(); };
不知道您的設備,但可能值得一試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.