Javascript 如何用touchend for iOS Safari替换mouseout事件?
从文档中可以看出,我应该能够向元素添加一个事件侦听器,以便触发touchend事件(我假设这是当用户第一次触摸元素时抬起手指时发生的事件) 但是,我没有通过此代码获得所需的行为:Javascript 如何用touchend for iOS Safari替换mouseout事件?,javascript,ios,touch,mobile-safari,dom-events,Javascript,Ios,Touch,Mobile Safari,Dom Events,从文档中可以看出,我应该能够向元素添加一个事件侦听器,以便触发touchend事件(我假设这是当用户第一次触摸元素时抬起手指时发生的事件) 但是,我没有通过此代码获得所需的行为: /* Easy Scroll v1.0 written by Alen Grakalic, provided by Css Globe (cssglobe.com) please visit http://cssglobe.com/post/1495/easy-scroll-accessib
/*
Easy Scroll v1.0
written by Alen Grakalic, provided by Css Globe (cssglobe.com)
please visit http://cssglobe.com/post/1495/easy-scroll-accessible-content-scroller
*/
this.easyscroll = function(){
// id of the container element
var id = "myContent";
// navigation buttons text
//dave var nav = ["Scroll Up", "Scroll Down", "Reset"];
var nav = ["Scroll Up", "Scroll Down"];
// id for each navigation button (OPTIONAL)
//dave var navId = ["btnUp", "btnDown", "btnReset"];
var navId = ["btnUp", "btnDown"];
// movement speed
var speed = 10;
// desired height of the container element (in pixels)
var height = 300;
//
// END CONFIG
// do not edit below this line (unless you want to of course :) )
//
var obj = document.getElementById(id);
obj.up = false;
obj.down = false;
obj.fast = false;
var container = document.createElement("div");
var parent = obj.parentNode;
container.id="easyscroll";
parent.insertBefore(container,obj);
parent.removeChild(obj);
container.style.position = "relative";
container.style.height = height + "px";
container.style.overflow = "hidden";
obj.style.position = "absolute";
obj.style.top = "0";
obj.style.left = "0";
container.appendChild(obj);
var btns = new Array();
var ul = document.createElement("ul");
ul.id="easyscrollnav";
for (var i=0;i<nav.length;i++){
var li = document.createElement("li");
li.innerHTML = nav[i];
li.id = navId[i];
btns.push(li);
ul.appendChild(li);
}
parent.insertBefore(ul,container);
btns[0].onmouseover = function(){
obj.up = true;
this.className = "over";
};
btns[0].onmouseout = function(){
obj.up = false;
this.className = "";
};
btns[1].onmouseover = function(){
obj.down = true;
this.className = "over";
};
btns[1].onmouseout = function(){
obj.down = false;
this.className = "";
};
btns[0].onmousedown = btns[1].onmousedown = function(){
obj.fast = true;
};
btns[0].onmouseup = btns[1].onmouseup = function(){
obj.fast = false;
};
btns[0].addEventListener("touchend", function(){
obj.up = false;
}, false);
btns[1].addEventListener("touchend", function(){
obj.down = false;
}, false);
//btns[2].onmouseover = function(){
// this.className = "over";
// };
//btns[2].onmouseout = function(){
//this.className = "";
//};
//btns[2].onclick = function(){
// obj.style.top = "0px";
// };
this.start = function(){
var newTop;
var objHeight = obj.offsetHeight;
var top = obj.offsetTop;
var fast = (obj.fast) ? 2 : 1;
if(obj.down){
newTop = ((objHeight+top) > height) ? top-(speed*fast) : top;
obj.style.top = newTop + "px";
};
if(obj.up){
newTop = (top < 0) ? top+(speed*fast) : top;
obj.style.top = newTop + "px";
};
};
obj.interval = setInterval("start()",50);
};
//
// script initiates on page load.
//
this.addEvent = function(obj,type,fn){
if(obj.attachEvent){
obj['e'+type+fn] = fn;
obj[type+fn] = function(){obj['e'+type+fn](window.event );}
obj.attachEvent('on'+type, obj[type+fn]);
} else {
obj.addEventListener(type,fn,false);
};
};
addEvent(window,"load",easyscroll);
/*
轻松滚动1.0版
由Alen Grakalic编写,由Css Globe(cssglobe.com)提供
请访问http://cssglobe.com/post/1495/easy-scroll-accessible-content-scroller
*/
this.easyscroll=函数(){
//容器元素的id
var id=“myContent”;
//导航按钮文本
//dave var nav=[“向上滚动”、“向下滚动”、“重置”];
var nav=[“向上滚动”、“向下滚动”];
//每个导航按钮的id(可选)
//dave var navId=[“btnUp”、“btnDown”、“btnReset”];
变量navId=[“btnUp”,“btnDown”];
//移动速度
无功转速=10;
//容器元素的所需高度(以像素为单位)
var高度=300;
//
//结束配置
//请勿在此行下方进行编辑(当然,除非您希望:)
//
var obj=document.getElementById(id);
obj.up=false;
obj.down=false;
obj.fast=false;
var container=document.createElement(“div”);
var parent=obj.parentNode;
container.id=“easyscroll”;
parent.insertBefore(container,obj);
父母。远程儿童(obj);
container.style.position=“relative”;
container.style.height=高度+px;
container.style.overflow=“hidden”;
obj.style.position=“绝对”;
obj.style.top=“0”;
obj.style.left=“0”;
子容器(obj);
var btns=新数组();
var ul=document.createElement(“ul”);
ul.id=“easyscrollnav”;
对于(变量i=0;i高度)?顶部-(速度*快速):顶部;
obj.style.top=newTop+“px”;
};
如果(对象向上){
newTop=(top<0)?top+(速度*快):top;
obj.style.top=newTop+“px”;
};
};
obj.interval=setInterval(“start()”,50);
};
//
//脚本在页面加载时启动。
//
this.addEvent=功能(对象,类型,fn){
如果(对象附件){
obj['e'+类型+fn]=fn;
obj[type+fn]=function(){obj['e'+type+fn](window.event);}
对象附件('on'+类型,对象[type+fn]);
}否则{
obj.addEventListener(类型,fn,false);
};
};
addEvent(窗口,“加载”,easyscroll);
在iOS上的Safari中,我必须再次单击btn[0]
和btn[1]
,才能停止滚动。所需的行为是,用户在第一次触摸开始滚动后,只要取下手指,滚动就会停止。easyscroll库是为桌面浏览器而设计的,我也在尝试将其应用于iOS
如果不进行修改,就不可能停止触摸设备上的滚动。我无法访问您提供的链接,您是否阅读了本页,您不能在触摸屏设备上使用鼠标输出,我意识到,只有mousedown和mouseupYes,这就是为什么我试图用设备的触摸事件替换它们,同时维护桌面浏览器功能