我想讓一個網站在我的iPad上工作,但唯一不起作用的是onmousemove方法。當用戶將手指放在屏幕上時,我希望onmousemove被觸發。iPad等價於onmousemove?
回答
啓用觸摸的設備中的mousemove
事件的等效事件是touchmove
事件。
所以,你可能綁定像這樣的事件:
var addEvent = (function() {
var tester, allHandlers, attachGenerator, addFunc, removeFunc;
tester = document.createElement("div");
allHandlers = [];
attachGenerator = function (el, cb) {
var ret;
ret = function (e) {
e = e || window.event;
cb.call(el, e);
};
return ret;
};
if (tester.addEventListener) {
addFunc = function (element, eventName, callback) {
allHandlers.push({
element: element,
eventName: eventName,
callback: callback
});
element.addEventListener(eventName, callback, false);
};
removeFunc = function (element, eventName, callback) {
element.removeEventListener(eventName, callback);
};
} else if (tester.attachEvent) {
addFunc = function (element, eventName, callback) {
var finalCallback;
finalCallback = attachGenerator(element, callback);
allHandlers.push({
element: element,
eventName: eventName,
callback: finalCallback
});
element.attachEvent("on" + eventName, finalCallback);
};
removeFunc = function (element, eventName, callback) {
element.detachEvent("on" + eventName, callback);
};
}
addFunc(window, "unload", function() {
var i, j, cur;
// Don't remove this unload handler
for (i = 1, j = allHandlers.length; i < j; i++) {
cur = allHandlers[i];
removeFunc(cur.element, cur.eventName, cur.callback);
}
});
return addFunc;
}());
function loadHandler() {
addEvent(document, "touchmove", touchmoveHandler);
}
function touchmoveHandler() {
// this callback should fire for every pixel (or whatever unit they may use) the touch moves
}
addEvent(window, "load", loadHandler);
(該addEvent
功能僅僅是一個普通的事件綁定功能,以幫助在舊IE工作...大概不必要的,如果你綁定到touch
事件)
注意,我原來的通用addEvent
功能不健全:http://www.quirksmode.org/blog/archives/2005/08/addevent_consid.html,但我修改了我以前用更好地支持處理器內的this
的可用性時attachEvent
必須使用,並刪除所有的處理程序當窗口的unload
事件發生時。
參考文獻:
我的印象是[addEvent()不是一段好用的代碼](http://www.quirksmode.org/blog/archives/2005/08/addevent_consid .html) - 或者至少盲目使用,而不會意識到危險。否則爲+1! – doppelgreener
@JonathanHobbs嗯,從來沒有聽說過這些警告。我必須仔細閱讀,謝謝你的鏈接! – Ian
@JonathanHobbs因此,似乎'attachEvent'的兩個主要問題是處理程序中對this的引用,以及頁面重新加載之間的內存泄漏。我更新了我的'addEvent'(和我的答案),希望能夠修復/幫助這兩者。我測試了IE7/8和最新版本的Chrome,而且這一切似乎都運行良好。這是我的小提琴,只是作爲參考:http://jsfiddle.net/tAQjf/ – Ian
- 1. 等價於BN_hex2bn
- 2. 等價於getbounds
- 3. `expect_any_instance_of`等價於PHPUnit
- 4. C++等價於Tidy
- 5. Scala等價於java.util.Collection?
- 6. WPF等價於ActiveControl?
- 7. SizeToContent等價於WinForm?
- 8. jconsole等價於.Net?
- 9. Scala等價於pyTables?
- 10. Java等價於IntPtr.ZERO?
- 11. C++等價於SerializeWithLengthPrefix
- 12. Python等價於bwmorph
- 13. JAXB等價於@Mappedsuperclass
- 14. WPF等價於TextRenderer
- 15. xmlseealso等價於Simplexml
- 16. iOS等價於SecTransformRef?
- 17. jquery等價於form.field_name?
- 18. BorderLayout.CENTER等價於SWT?
- 19. JVMTI等價於.NET
- 20. java等價於mkstemp
- 21. IPAddress.HostToNetworkOrder()等價於WinRT?
- 22. jQuery等價於querySelector
- 23. GLSL等價於sampler_state?
- 24. fromCharCode等價於Ruby
- 25. Swift等價於ValueForKey:
- 26. YUI.getElementsBy等價於jQuery
- 27. JMS等價於.Net
- 28. Instr等價於perl?
- 29. CommonsLogger等價於slf4j
- 30. charCodeAt()等價於Ruby
也許嘗試'ontouchmove' - https://developer.mozilla.org/en-US/docs/Web/Guide/DOM/活動/ Touch_events – Ian
@Ian這聽起來很適合[基於本節的第一行](https://developer.mozilla.org/en-US/docs/Web/Guide/DOM/Events/Touch_events#Drawing_as_the_touches_move) 。你想發佈這個答案,所以我可以upvote它? – doppelgreener
@JonathanHobbs謝謝,我很感激:)剛發佈了一個答案。如果您覺得可以改進,請隨時添加/更改任何內容! – Ian