我想让一个网站在我的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