Javascript iPad相当于onmousemove?

Javascript iPad相当于onmousemove?,javascript,events,mobile-safari,compatibility,Javascript,Events,Mobile Safari,Compatibility,我正试图让一个网站在我的iPad上运行,但唯一不起作用的是onmousemove方法。我希望当用户将手指在屏幕上平移时触发onmousemove。在启用触摸功能的设备中,与mousemove事件相当的是touchmove事件 因此,您可以像这样绑定事件: var addEvent = (function () { var tester, allHandlers, attachGenerator, addFunc, removeFunc; tester = document.cr

我正试图让一个网站在我的iPad上运行,但唯一不起作用的是onmousemove方法。我希望当用户将手指在屏幕上平移时触发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);
var addEvent=(函数(){
var测试器、allHandlers、attachGenerator、addFunc、removeFunc;
tester=document.createElement(“div”);
allHandlers=[];
附件发电机=功能(el,cb){
var-ret;
ret=功能(e){
e=e | | window.event;
cb.call(el,e);
};
返回ret;
};
if(测试仪添加的事件列表器){
addFunc=函数(元素、事件名、回调){
推({
元素:元素,
eventName:eventName,
回调:回调
});
元素addEventListener(eventName,回调,false);
};
removeFunc=函数(元素、事件名、回调){
removeEventListener(事件名,回调);
};
}else if(测试仪附件){
addFunc=函数(元素、事件名、回调){
var finalCallback;
finalCallback=attachGenerator(元素,回调);
推({
元素:元素,
eventName:eventName,
回拨:最终回拨
});
元素。attachEvent(“on”+eventName,finalCallback);
};
removeFunc=函数(元素、事件名、回调){
detachEvent(“on”+eventName,回调);
};
}
addFunc(窗口,“卸载”,函数(){
变量i,j,cur;
//不要删除此卸载处理程序
对于(i=1,j=allHandlers.length;i
addEvent
函数只是一个通用的事件绑定函数,用于帮助在旧IE中工作……如果绑定到
touch
事件,可能不需要)

请注意,我原来的generic
addEvent
函数并不完美:,但我修改了我以前使用的函数,以便在必须使用
attachEvent
时更好地支持处理程序内部的
this
的可用性,并且在窗口的
unload
事件发生时删除所有处理程序

参考资料:


也许可以试试
ontouchmove
-@Ian,听起来很合适。你想把它作为一个答案发布,这样我就可以投票了吗?@JonathanHobbs谢谢,我很感激:)刚刚发布了一个答案。如果您觉得可以改进,请随意添加/更改任何内容@伊恩·多恩:投票和评论我的印象是——或者说,至少是盲目使用,而没有意识到危险+1否则@JonathanHobbs嗯,以前从没听说过这些警告。我必须通读一遍,谢谢你的链接@JonathanHobbs因此,
attachEvent
的两个主要问题似乎是处理程序内部对
this
的引用,以及页面重新加载之间的内存泄漏。我更新了我的
addEvent
(以及我的答案),希望能够修复/帮助这两个问题。我在IE7/8和最新的Chrome上进行了测试,看起来一切都很好。这是我的小提琴,仅供参考: