1.点击跳转详情页。
2.长按显示遮罩层和删除按钮
3.点击删除按钮,删除此项。
下面会详细介绍我处理此问题时所出现的问题,及处理方法(本文基于jQuery)
首先我对列表添加了长按事件,添加完之后,发现我的长按事件已经可以成功执行了。但是却出现了新的问题:
这个问题好处理,只需添加一个变量,来判断是否为长按事件
这样上面的问题就完美解决了。
接下来就是给遮罩层上的删除按钮添加事件
但是在这里就发现了新的问题
所以就需要一个新的事件来覆盖原本的事件
然后,整个点击跳转,长按显示删除,删除事件,就已经完美解决了。
但是,在移动端查看的时候就会发现正常的滚动事件被preventDefault屏蔽了。
此处有两种解决方式:
1.删除 e.preventDefault()
删除preventDefault有可能会出现其它情况,不过我暂时没发现如果出现其它情况,可使用下面的方法
删除的点击事件也是如此
By : Yimi-shan
Js判断客户端是否为PC还是手持移动设备
方法一
function IsPC(){
var userAgentInfo = navigator.userAgent
var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod")
var flag = true
for (var v = 0v
if(userAgentInfo.indexOf(Agents[v]) >0) { flag = falsebreak}
}
return flag
}
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
//alert(navigator.userAgent)
window.location.href ="iPhone.html"
} else if (/(Android)/i.test(navigator.userAgent)) {
//alert(navigator.userAgent)
window.location.href ="Android.html"
} else {
window.location.href ="pc.html"
}
方法二
var browser={
versions:function(){
var u = navigator.userAgent, app = navigator.appVersion
return {//移动终端浏览器版本信息
trident: u.indexOf('Trident') >-1, //IE内核
presto: u.indexOf('Presto') >-1, //opera内核
webKit: u.indexOf('AppleWebKit') >-1, //苹果、谷歌内核
gecko: u.indexOf('Gecko') >-1 &&u.indexOf('KHTML') == -1, //火狐内核
mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
ios: !!u.match(/\(i[^]+( U)? CPU.+Mac OS X/), //ios终端
android: u.indexOf('Android') >-1 || u.indexOf('Linux') >-1, //android终端或者uc浏览器
iPhone: u.indexOf('iPhone') >-1 , //是否为iPhone或者QQHD浏览器
iPad: u.indexOf('iPad') >-1, //是否iPad
webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部
weixin: u.indexOf('MicroMessenger') >-1, //是否微信
qq: u.match(/\sQQ/i) == " qq" //是否QQ
}
}(),
language:(navigator.browserLanguage || navigator.language).toLowerCase()
}
if(browser.versions.mobile || browser.versions.ios || browser.versions.android ||
browser.versions.iPhone || browser.versions.iPad){
window.location = "http://m.zhaizhainv.com"
}
方法三: 摘自im- qq
var os = function() {
var ua = navigator.userAgent,
isWindowsPhone = /(?:Windows Phone)/.test(ua),
isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone,
isAndroid = /(?:Android)/.test(ua),
isFireFox = /(?:Firefox)/.test(ua),
isChrome = /(?:Chrome|CriOS)/.test(ua),
isTablet = /(?:iPad|PlayBook)/.test(ua) || (isAndroid &&!/(?:Mobile)/.test(ua)) || (isFireFox &&/(?:Tablet)/.test(ua)),
isPhone = /(?:iPhone)/.test(ua) &&!isTablet,
isPc = !isPhone &&!isAndroid &&!isSymbian
return {
isTablet: isTablet,
isPhone: isPhone,
isAndroid : isAndroid,
isPc : isPc
}
}()
使用方法
if(os.isAndroid || os.isPhone){
alert("-----")
}
方法四:
if(/AppleWebKit.*mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))){
if(window.location.href.indexOf("?mobile")<0){
try{
if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){
window.location.href="手机页面"
}elseif(/iPad/i.test(navigator.userAgent)){
window.location.href="平板页面"
}else{
window.location.href="其他移动端页面"
}
}catch(e){}
}
}
方法五
//平台、设备和操作系统
varsystem ={
win:false,
mac:false,
xll:false
}
//检测平台
varp = navigator.platform
system.win = p.indexOf("Win") ==0
system.mac = p.indexOf("Mac") ==0
system.x11 = (p =="X11") || (p.indexOf("Linux") ==0)
//跳转语句,如果是手机访问就自动跳转到caibaojian.com页面
if(system.win||system.mac||system.xll){
}else{
window.location.href="http://caibaojian.com"
}
方法六
functionis_mobile(){
varregex_match =/(nokia|iphone|android|motorola|^mot-|softbank|foma|docomo|kddi|up.browser|up.link|htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte-|longcos|pantech|gionee|^sie-|portalmmm|jigs browser|hiptop|^benq|haier|^lct|operas*mobi|opera*mini|320x320|240x320|176x220)/i
varu = navigator.userAgent
if(null== u) {
returntrue
}
varresult = regex_match.exec(u)
if(null== result) {
returnfalse
}else{
returntrue
}
}
if(is_mobile()) {
document.location.href='http://caibaojian.com'//修改http://caibaojian.com为你所需跳转目标页地址
}
方法7 百度webapp版
<!---识别手机或电脑的js开始--->
(function(){
varres = GetRequest()
varpar = res['index']
if(par!='gfan'){
varua=navigator.userAgent.toLowerCase()
varcontains=function(a, b){
if(a.indexOf(b)!=-1){returntrue}
}
//将下面的http://caibaojian.com改成你的wap手机版页面地址 如我的 http://caibaojian.com
vartoMobileVertion =function(){
window.location.href ='http://caibaojian.com/'
}
if(contains(ua,"ipad")||(contains(ua,"rv:1.2.3.4"))||(contains(ua,"0.0.0.0"))||(contains(ua,"8.0.552.237"))){returnfalse}
if((contains(ua,"android") &&contains(ua,"mobile"))||(contains(ua,"android") &&contains(ua,"mozilla")) ||(contains(ua,"android") &&contains(ua,"opera"))
||contains(ua,"ucweb7")||contains(ua,"iphone")){toMobileVertion()}
}
})()
functionGetRequest(){
varurl = location.search//获取url中"?"符后的字串
vartheRequest =newObject()
if(url.indexOf("?") !=-1) {
varstr = url.substr(1)
strs = str.split("&")
for(vari =0i <strs.lengthi ++) {
theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1])
}
}
returntheRequest
}
1、如图位置是一个html中的可编辑内容的div标签,在里边输入文字,会有一个光标。
2、通过getSelection可以获得一个Selection对象,如图。因为是一个光标,anchor和focus(选择的起点和终点)一样,偏移也一样。
3、如图,则进行文字选择,而且是跨行选择,以第一行为起点,第二行为终点,选择文字。
4、再次getSelection,可以看到anchorNode是起始节点,anchorOffset是起始偏移,focus是结束的。
5、如果从第二行倒着选到第一行,使用getSelection获取选择区域,可以看到anchorNode和focusNode和刚才相比,互换了。
6、使用一个node的textContent属性可以获得文字。结合focusOffset和anchorOffset,实际上可以获取光标/选中区域前后的文字。
7、将起始和结束位置设置为相同,而且都在结束节点的末尾。即变成闪烁光标。