整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

移动HTML5模拟触摸屏长按事件

近接了个需求,要求长按某个标签显示删除一个悬浮的删除按钮。这个需求其实在app上很常见,但是在移动端h5中,我们没有长按的事件,所以就需要自己模拟这个事件了。

大概效果如下:

设计思路:

  • 放弃click事件,通过判断按的时长来决定是单击还是长按
  • 使用touchstart和touchend事件
  • 在touchstart中开启一个定时器,比如在600ms后显示一个长按菜单
  • 在touchend中清除这个定时器,这样如果按下的时间超过600ms,那么长按菜单已经显示出来了,清除定时器不会有任何影响;如果按下的时间小于600ms,那么touchstart中的长按菜单还没来得及显示出来,就被清除了。

由此我们可以实现模拟的长按事件了。

上代码

请把重点放在JS上,这里贴出来完整的代码是为了方便大家看个仔细,代码可以拷贝直接看效果

css中大部分只是做了样式的美化,还有一开始让删除按钮隐藏起来

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>
 <link rel="stylesheet" type="text/css" href="./longpress.css" />
</head>
<body>
 <div class="container">
 <div class="label" id="label">长按我</div>
 <div class="delete_btn">删除</div>
 </div>
 <script src="./longpress.js"></script>
</body>
</html>

JS

let timer = null
let startTime = ''
let endTime = ''
const label = document.querySelector('.label')
const deleteBtn = document.querySelector('.delete_btn')
label.addEventListener('touchstart', function () {
 startTime = +new Date()
 timer = setTimeout(function () {
 deleteBtn.style.display = 'block'
 }, 700)
})
label.addEventListener('touchend', function () {
 endTime = +new Date()
 clearTimeout(timer)
 if (endTime - startTime < 700) {
 // 处理点击事件
 label.classList.add('selected')
 }
})

CSS

.container {
 position: relative;
 display: inline-block;
 margin-top: 50px;
}
.label {
 display: inline-block;
 box-sizing: border-box;
 width: 105px;
 height: 32px;
 line-height: 32px;
 background-color: #F2F2F2;
 color: #5F5F5F;
 text-align: center;
 border-radius: 3px;
 font-size: 14px;
}
.label.selected {
 background-color: #4180cc;
 color: white;
}
.delete_btn {
 display: none;
 position: absolute;
 top: -8px;
 left: 50%;
 transform: translateX(-50%) translateY(-100%);
 color: white;
 padding: 10px 16px;
 background-color: rgba(0, 0, 0, .7);
 border-radius: 6px;
 line-height: 1;
 white-space: nowrap;
 font-size: 12px;
}
.delete_btn::after {
 content: '';
 width: 0;
 height: 0;
 border-width: 5px;
 border-style: solid;
 border-color: rgba(0, 0, 0, .7) transparent transparent transparent;
 position: absolute;
 bottom: -9px;
 left: 50%;
 transform: translateX(-50%);
}

ps: touchstart和touchend只有在移动端设备上才有用,如果要看代码示例的话请:

  • 用chrome
  • F12打开调时窗
  • 切换到模拟移动设备

即点击如下图:

图片来源:pixabay.com

● ● ●

8月23日早8点,《知识分子》微信公众号推出“九省市高中名校学生论文涉嫌造假,或涉自主招生黑幕”一文,该文有理有据,引发强烈关注和激励讨论,短短三个小时,阅读量便超过了十万。


不过,文章随后被相关部门删除,微信平台的数据最终定格在阅读量131490,点赞数1221,以及356条评论。


微博上也有同样的影响,但该条微博也很快被屏蔽。该文在其他平台如知乎、“幸存”。

文章刊发后,多家媒体迅速跟踪报道此事。《新京报》发表快评“多篇自主招生论文涉造假,高校宜介入调查 | 新京报快评”, 央广、新华社、财新等媒体均与《知识分子》取得联系,表示将继续挖掘自主招生涉嫌造假一事。北京时间旗下泛资讯短视频平台“时间视频”通过一个短视频讲述了这个事件,全网多家媒体转发,视频播放量总计约379万。

这篇文章从浩瀚无垠的论文中选取涉嫌造假的论文,比对被抄袭的原文,再逐一核查涉事学生的相关资料,工作量之大,可想而知。作者莽原告诉《知识分子》,“其实最耗费时间的是追溯这些学生的去向和期刊状况。因为很多学生靠百度搜索是没有任何结果的,阳光高考平台又不能按学生姓名搜索。所以就连证明作者是学生都得花费很长时间,需要使用谷歌搜索,再去查看学校官网或是挂在文库的成绩册。”

做原创内容之难,相信每个人都深有体会。那是不是应该被尊重呢?

不和谐的行为是,《北京青年报》在8月17号发表“多个名校高中生被曝论文抄袭 或为取得自主招生资格”,在文章开头,《北京青年报》记者写道:昨天,有网友发文称,其查阅了自主招生录取名额较多的九省市高中名校学生发表的论文后,发现了多篇涉嫌抄袭的论文,有学生借助论文进入了高校大门。”

之前该记者在《知识分子》微信后台留消息欲与作者莽原取得联系,所以该报应该知道“九省市高中名校学生论文涉嫌造假,或涉自主招生黑幕”一文并非匿名网友,但却最终选择了隐去来源。

而在正文中,我们也可以看到,大部分内容都是对《知识分子》文章的转述,之后“对于网上热传文章中列出的一些具体案例,北青报记者也在昨天进行了比对”,加上了涉及论文的比对内容。只在最后一部分“回应”中,该记者联系了《知识分子》文章中提到的论文被抄袭者、刊登论文的期刊等相关方。

►北青报文章缩略图(黄色标识为与知识分子原文相似部分)

两文相似部分对比具体如下,黄色为北青报文,绿色为知识分子文:

►对比图1

►对比图2

►对比图3

►对比图4

►对比图5

►对比图6

有趣的是,学生论文涉嫌造假一文讲述的正是改头换面其他人写的论文,北青报的行为与之异曲同工,用“抄袭”批评“抄袭”,令人啼笑皆非。

客观地说,该报也有劳动付出,《知识分子》并不否认这一点,但该报在引用《知识分子》文章大量内容时却未给出来源。北青报的文章使用了《知识分子》作者的独创性文字,该记者在留言和发给其编辑的原稿中也承认了这一点。大量使用他人原创内容,却未经著作权人许可,这一行为构成《著作权法》第四十七条第五项的侵权行为。

很遗憾的是,该记者联系《知识分子》后,表示原稿中注明了出处,后被编辑删除,始终不承认其“洗稿”行为,甚至不承认有任何错误。

事实上根据《著作权法》,《知识分子》有权要求对方删除文章并赔偿损失,但出于沟通考虑,在被侵权并且对方拒绝承认的情况下,《知识分子》仍然希望能够和平友好解决,并仅提出认错和道歉的要求。向该记者提出这点后,对方表示需要和领导沟通,再无音讯。

►对方未做任何回复

截至发稿,面对《知识分子》之后多次的友好询问,对方始终未做任何回复。

去知识分子网站看一看这些文章:

临床急需的罕见病和儿童用药依库珠单抗获批上市

http://www.zhishifenzi.com/news/medicine/3831.html

Antibody Therapeutics创刊 | 何苗壮:寻找“魔弹”

http://www.zhishifenzi.com/news/medicine/3822.html

这些能谱曲会作画的人工智能,骗得过你吗?

http://www.zhishifenzi.com/depth/depth/3825.html

微软聊天AI小冰:为什么说话越多,越容易出错?

http://www.zhishifenzi.com/depth/depth/3830.html

1500元买篇论文,自主招生谁在“走门道”?

http://www.zhishifenzi.com/depth/depth/3327.html

啼笑皆非:北青报用“抄袭”的手法报道“抄袭”

http://www.zhishifenzi.com/news/multiple/3310.html

黑洞是如何“吃大餐”的? | 赛先生天文

http://www.zhishifenzi.com/news/astronomy/3820.html

(长按复制上方链接,浏览器打开)

制版编辑 | 皮皮鱼

本页刊发内容未经书面许可禁止转载及使用

公众号、报刊等转载请联系授权

copyright@zhishifenzi.com

商务合作请联系

business@zhishifenzi.com

知识分子为更好的智趣生活 ID:The-Intellectual

何在网页中屏蔽右键,众所周知。要保护好一个页面,最基础的就是屏蔽右键!

实现方法,在body下加上oncontextmenu=self.event.returnValue=false onselectstart="return false"这句话即可,如下:

〈body oncontextmenu=self.event.returnValue=false onselectstart="return false"〉

长按会复制等选项可以使用下述的代码屏蔽这个功能,将下述的css加到代码中即可: