场景
现在很多网站,比如淘宝,京东等都改用使用极验拖动验证码实现登录,这种方式比传统的验证码方式有更好的体验,减少用户输入的错误,也同样能起到防盗刷的功能。现在很多极验都是第三方的,也很多都是收费的。今天在这里给大家分享自己用原生php实现的一个极验的代码。用原生php的好处就是以后你要嵌套到什么框架,可以直接用核心代码,改一改就好了。
极验拖动验证实现演示:http://blog.startphp.cn/jiyan/
极验拖动动画图
代码文件截图
代码实现
html文件
php文件:check.php
主要核心文件:TnCode.class.php
文章来自于【源码下载地址】
链接:http://blog.startphp.cn/thread-165-1-1.html
简介】
拖放是一种常见的特性, 属于html5标准的一部分, 即抓取对象以后拖动到另一个位置, 在html5中, 任何元素都可被设置拖放。首先, 我们要给需要拖动的HTML元素启用拖动功能, 设置属性draggable="true",
<div draggable="true"></div>
提示:a标签和img标签默认是启用该属性的, 可不需要设置draggable属性。
draggable有三个值, 如下所示:
draggable=true(元素可以被拖动)
draggable=false(元素不能被拖动)
draggable=auto(浏览器可以自主决定某个元素是否可以被拖动)
【用法】
当我们用鼠标拖拽目标元素过程中会触发的事件:
ondragstart:用户按下鼠标开始拖动时触发
ondrag:用户正在拖动时反复触发
ondragend:用户结束拖动后触发
<img id="imgs" ondragstart="startFun()" ondrag="ondragFun()" ondragend="ondragendFun()" src="../img/a.png"/>
当拖动元素进入目标容器内触发的事件:
ondragenter:鼠标拖动对象进入释放区时触发
ondragover:被拖动物体进入目标容器内移动时反复触发
ondragleave:拖动对象在释放区没有释放就离开容器时触发
ondrop:被拖动物体在目标容器内释放时触发
<div id="container" ondragenter="ondragenterFun(event)" ondragover="ondragoverFun(event)" ondragleave="ondragleaveFun()" ondrop="drop()"></div>
ondragenter和ondragover事件的默认行为是拒绝接受任何被拖放的项目, 所以我们必须要做的最重要的事情就是防止这种默认行为的发生。
因此, 我们只需要在这两个事件调用的函数中传入event对象, 使用event.preventDefault()就可取消这种默认行为;举个例子, 在drop事件时, Firefox浏览器会关闭网页, 转而显示被拖动图片img元素src所引用的地址。
取消元素默认行为:
function ondragenterFun(e){
e.preventDefault();
}
function ondragoverFun(e){
e.preventDefault();
}
在event对象中, 我们会使用dataTransfer属性来获取DataTransfer对象, 在DataTransfer对象中有我们操作数据的属性和方法, 具体如下:
datatransfer:转移释放元素的数据到释放区, 返回Datatransfer对象
event.dataTransfer //返回DataTransfer对象
DataTransfer对象的属性:
files:处理从操作系统拖动并释放到释放区的文件;
types:返回一个字符串数组, 该对象包含了dataTransfer对象中数据的所有类型;
items:返回DataTransferItems对象, 该对象代表了拖动数据;
dropEffect:设置拖放目标允许发生的拖放行为, 如果此处设置的拖放行为不在effectAllowed属性设置的可拖放行为内, 拖放操作将会失败。该属性值只允许为"null"、"copy"、"link"或"move";
effectAllowed:设置拖动元素允许发生的拖动行为, 该属性值可为"none"、"copy"、"copyLink"、"copyMove"、"link"、"linkMove"、"move"、"all"或"uninitialized";
DataTransfer对象的方法:
setData( format , data ):将指定格式的数据赋值给dataTransfer对象,参数format定义数据的格式也就是数据的类型,data为待赋值的数据。
getData( format ):从dataTransfer对象中获取指定格式的数据,format代表数据格式,data为数据。
clearData( [format] ):从dataTransfer对象中删除指定格式的数据,参数可选,若不给参数,将删除对象中所有的数据。
setDragImage(el, x, y):设置拖放操作的图标,其中el代表自定义图标,x代表图标与鼠标在水平方向上的距离,y代表图标与鼠标在垂直方向上的距离。
了解了H5拖动使用的api以后我们接下来看一个综合的案例, 功能如下:
1)、实现图片拖动功能;
2)、实现图片复制功能;
3)、过滤不能拖动的元素;
4)、实现拖动本地图片到浏览器指定位置;
公共css部分:
<style>
#dropIn{
border:1px solid #AAAAAA;
height:100px;
margin-bottom: 10px;
padding: 10px;
}
#dropIn>img{
margin-right: 10px;
border:2px solid deepskyblue;
}
img{
width:100px;
border-radius: 10px;
border:2px solid red;
}
</style>
html部分:
<body>
<div id="dropIn"></div> <!--释放区-->
<img id="drop1" src="img/a.png" alt="" />
<!--拖动的图片元素-->
</body>
js部分:
<script type="text/javascript">
var darggID;
function getId(el){
return document.getElementById(el)
}
var dropId1=getId("drop1");
var dropInId=getId("dropIn");
//取消事件默认行为
dropInId.ondragenter=cancelDefault;
dropInId.ondragover=cancelDefault; //绑定拖动元素释放时触发的事件
dropInId.ondrop=drop; //绑定
dropId1.ondragstart=startFun;
function cancelDefault(ev){ //取消默认行为
ev.preventDefault();
}
function startFun(ev){
darggID=ev.target.id;
//获取被拖动元素的id
//从源对象上的事件处理中保存数据,数据类型为"Text"
ev.dataTransfer.setData("Text",darggID);
}
function drop(ev){
ev.preventDefault();
// 从目标对象上的事件处理中读取"Text"类型数据
var data=ev.dataTransfer.getData("Text");
// 插入到目标对象中
ev.target.appendChild(document.getElementById(data));
}
</script>
接下来我们添加两张图, "drop2"是实现复制的图片, "drop3"是既不能复制也不能拖动的图片;
<img id="drop2" src="img/b.png" alt="" /><img id="drop3" src="img/c.png" alt="" />
添加js代码:
//获取页面元素
var dropId2=getId("drop2");
var dropId3=getId("drop3");
//绑定事件
dropId2.ondragstart=startFun;dropId3.ondragstart=startFun;
//修改drop函数为
function drop(ev){
ev.preventDefault();
// 从目标对象上的事件处理中读取"Text"类型数据
var data=ev.dataTransfer.getData("Text");
if(data=='drop1'){
//移动
ev.target.appendChild(document.getElementById(data));
}
if(data=='drop2'){//复制
var nreEl=document.getElementById(darggID).cloneNode(false);
getId("dropIn").appendChild(nreEl);
}
if(data=='drop3'){//过滤drop3,drop3不做任何操作
alert('过滤drop3')
}
}
接下来我们实现拖动本地图片到浏览器, 我们就将图片拖动到id为"dropIn"的这个div中;添加js:
/*document 监听drop 并阻止浏览器打开客户端的图片*/
document.ondragover=function (e) {
//只有在ondragover中阻止默认行为
e.preventDefault();
};
document.ondrop=function (e) {
//阻止 document.ondrop的默认行为
e.preventDefault();
};
//dropIn是div的id
dropIn.ondrop=function (e) {
var list=e.dataTransfer.files;
for (var i=0; i < list.length; i++) {
var f=list[i];
reader(f);
}
};
function reader(f) {
var reader=new FileReader();
//读取数据
reader.readAsDataURL(f);
reader.onload=function () {
var img=new Image();
img.src=reader.result;
dropIn.appendChild(img);
}
}
【浏览器支持】
目前只有Internet Explorer 9、Firefox、Opera 12、Chrome 以及 Safari5支持拖放,在 Safari5.1.2 中不支持拖放。
最后再和大家分享一个技巧, 这种拖动行为还能跨浏览器工作, 这里说的跨浏览器不是浏览器之间的跨窗口, 而是可以从Chrome浏览器拖动到Firefox浏览器, 因为拖放功能的支持是集成在操作系统里面的, 有着相同的特性。
家好,我是 Echa。
今天来分享 50 个超实用的 Chrome 浏览器扩展!
JSON Viewer Pro 用于可视化JSON文件。其核心功能包括:
输入界面如下:
格式化之后:
JSONVue 是一个JSON数据查看器,主要用来格式化JSON数据:
Library Sniffer 是一款给开发者使用的工具,能够探测当前网页所使用的类库、框架和服务器环境,为开发者提供了方便。
Wappalyzer 扩展可以用来识别网站背后的底层技术。通过此扩展,可以了解特定应用程序是否是用 React、Vue、Angular、PHP等编写的。还可以访问有关 Web 服务器、编程语言、框架、内容管理系统、分析的信息工具、数据库等。
WhatRuns 扩展程序只需单击一下即可找到任何网站上使用的技术。
使用PerfectPixel插件可以将设计图加载至网页中,与已成型的网页进行重叠对比,以帮助开发和设计人员规范网页像素精度。这是一款可以优化前端页面显示的Chrome插件。
可以使用此扩展程序快速清除缓存,无需任何确认对话框、弹出窗口等。可以在选项页面上自定义要清除的数据和数量,包括:应用程序缓存、缓存、Cookie、下载、文件系统、表单数据、历史记录、索引数据库、本地存储、插件数据、密码和 WebSQL。
VisBug 是一个使用 JavaScript 构建的开源网页设计调试工具,它可以让用户使用点击式和拖放式界面来查看网站的元素。
Debug CSS 是一个帮助调试CSS的插件。他可以显示出页面元素的轮播,按住Ctrl,并将鼠标悬浮在元素上,即可查看其信息:
CSS Viewer 是一款适用于 Web 开发人员的高效 Chrome 扩展。顾名思义,CSS 查看器可以显示将鼠标悬停在任何网页上的元素的 CSS 属性。
EditThisCookie 是一个 cookie 管理器。可以添加,删除,编辑,搜索,锁定和屏蔽cookies。
React Developer Tools 是开源 JavaScript 库 React 的 Chrome DevTools 扩展。它允许我们在 Chrome 开发者工具中检查 React 组件层次结构。安装此插件之后,将在 Chrome DevTools 中获得两个新选项卡:"?? Components" 和 "?? Profiler":
Vue.js devtools 是一款基于chrome浏览器的用于调试Vue.js应用程序的插件,可以使得开发人员大大提高调试效率。支持用户对DOM结构数据结构进行解析和调试功能。
Augury 可以帮助开发人员在 Google Chrome 浏览器中调试和分析 Angular 应用程序。
Firebug Lite是火狐浏览器中著名的开发者工具firebug插件移植到Chrome中的插件,在Chrome中安装了Firebug Lite插件以后,开发人员可以像在火狐浏览器中使用firebug一样熟悉的方式来调试网页内容,其包含了基本的HTML、CSS以及Javascript的调试功能,用于帮助网页前端开发工程师快速地调试网页,以便及时地找到网页中的BUG并及时修复。
HTML Validator 在 Chrome 的开发者工具中添加了 HTML Validator。HTML 页面的错误数通过浏览器状态栏中的图标显示,详细信息可以在浏览器的开发者工具中查看。
Web Developer 扩展为带有各种 Web 开发工具的浏览器添加了一个工具栏按钮。该扩展适用于 Chrome 和 Firefox,并且可以在这些浏览器支持的任何平台上运行,包括 Windows、macOS 和 Linux。
Requestly 是一款Chrome和Firefox浏览器插件,提供URL转发、修改HTTP请求和结果、插入脚本等功能。
Window Resizer 主要用来调整浏览器窗口的大小以模拟各种屏幕分辨率。
Responsive Viewer 是在一个视图中显示多个屏幕的 Chrome 扩展程序。该扩展将帮助前端开发人员在开发响应式网站/应用程序时测试多个屏幕。
此插件允许直接从浏览器发送跨域请求,而不会收到跨域错误。可以使用此插件覆盖 Request Origin 标头,并将 Access-Control-Allow-Origin 设置为 *.
ColorPick Eyedropper 是一个放大的吸管和颜色选择器工具,可让从网页等中选择颜色值。
CSS Peeper 用于检查和复制元素样式的优秀工具,使用 CSSPeeper 可以将鼠标悬停在网页中的任何元素上,然后单击鼠标即可复制元素的样式。
24. Dimensions
Dimensions是一款能帮助使用者对网页上各种元素属性之间的距离进行测量的Chrome页面元素测量插件,该插件在点击启动插件图标后,可以对页面中图像、输入字段、按钮以及视频等页面元素之间上下左右的方位尺寸进行测量,同时还可以通过使用快捷键来快速启用或关闭该插件的功能,简单实用。
Site Palette 用于生成调色板。设计师和前端开发人员必备的工具。可以通过这款插件轻松获取网站的配色方案。
ColorZilla 是一款功能强大地提取网页色彩的工具;也是个快速的对颜色进行调节的Chrome插件,许多的用户将这款软件称呼为颜色吸取插件,它提取的颜色是非常的多样化,还可生产css颜色的代码等。
当我们想查看网页中文字的字体时,最常用的方法就是在控制台查看文字的字体样式。那还有没有更简单的方法呢?WhatFont 就是一个查看网页字体的Chrome扩展。只需要的点击扩展图标,再点需要查看为文字即可:
Fonts Ninja 可以从任何网站识别字体、添加书签、试用并购买它们。
使用 BrowserStack 快速启动扩展在任何浏览器中启动一个新的测试会话。最多可设置 12 个浏览器以实现快速访问并最大限度地减少切换浏览器所花费的时间。
Toby 是一款 Chrome 新标签页工具,能够将未读的标签页分组显示在新标签页中,这样就能把所有未看完的标签页都关闭了。分组相当于多个 Chrome 窗口,将你的标签页都拖进 Toby 中,就不需要实时开着占地方了。
该扩展提供了每日热门开发者新闻,不需要再浪费时间搜索高质量的文章了。
Momentum 拥有漂亮的新标签页面,每日更新精彩背景壁纸图片,可设置每日新鲜事焦点以及跟踪待办事项,无广告,无弹窗。
The Great Suspender 是一个轻量级的扩展用来减少 Chrome 的内存占用。如果同时打开许多选项卡,在可配置的时间之后未查看的选项卡将在后台自动挂起,从而释放该选项卡消耗的内存和 CPU。
Session Buddy是一个可以帮助用户查看、新增、编辑当前网站Session状态的Chrome插件。用户可以利用该插件保存网站当前的状态以便在关闭Chrome或关闭计算机后恢复,从而达到节省内存的作用。
Octotree 旨在让 GitHub 体验更好。通常,为了检查 Github 中的子文件夹,需要手动单击文件夹并导航。Octotree 扩展解决了这个问题。此扩展在项目的左侧显示存储库的目录结构,这有助于更好地理解文件夹结构。
1_EKF88oqIyX6FzgueCKdtXg.gif
File Icons for GitHub and GitLab 可以将 GitHub 和 GitLab 上的原始文件图标替换为特定文件类型的图标。
ax DevTools 是一个快速、轻量级但功能强大的测试工具,由 Deque 开发的世界上最值得信赖的可访问性测试引擎 axe-core 驱动。使用 ax DevTools 在网站开发过程中查找并修复更多可访问性问题。
OctoLinker 可以将特定语言的语句(如 include、require 或 import)转换为链接。当打开一个包含多个导入语句的文件并且想要快速打开它时,只需将鼠标悬停在链接的文件上并单击即可打开。
此扩展可帮助 Web 开发人员分析网页是否违反最佳实践。
Check My Links 是一个链接检查器,它可以抓取网页并查找损坏的链接。
Checkbot 是用于验证一组HTML页面上的链接的工具。Checkbot可以检查一个或多个服务器上的单个文档或一组文档。它会创建一个报告,该报告汇总了引起某种警告或错误的所有链接。
Google Page Speed Insighs 是一款旨在优化所有设备上的网页、提高网页加载速度的工具。
META SEO inspector是一款可以帮助用户分析网页的meta信息并得到SEO评估的谷歌浏览器插件。
Ghostery 是强大的隐私保护扩展程序。其主要有以下功能:
AdBlock 用来在YouTube、Facebook、Twitch和其他你喜爱的网站上拦截广告和弹窗。
番茄工作法(Pomodoro?)时间管理助理。? 长短两种休息时间 ? 带有倒计时显示的工具栏图标 ? 追踪Pomodoro历史和统计讯息 ? 可配置的长休间隔 ? 可配置的定时器时长 ? 桌面与新标签页通知 ? 超过20种音效可选的声音通知 ? 计时器秒针走动音效
Loom 可以用来快速录制视频,并且能够将录制的视频上传到指定的网页中,Loom还支持在用户点击启动插件时,立即捕捉屏幕图像,同时开始视频录制操作,还可以将录制好的视频复制到粘贴板中存储。
GoFullPage 是一款全屏截图插件(整个网页截图),完整捕获您当前页面的屏幕,进行滚动截图,而无需任何额外的权限。单击扩展程序图标,然后将其传输到屏幕快照的新标签页中,可以在其中将其下载为图像或PDF,甚至只需拖动即可,保存到桌面。
BetterViewer 可以提供更好的图像查看体验,旨在替代基于 Chrome 浏览器中内置的图像查看模式。使用时,只需在页面右键点击图片,选择“在新标签页中打开图片”即可。
svg-grabber 是一个快速预览并从网站获取所有 svg 的工具。可以用来预览、下载和复制网站中所有 SVG 图标和插图的代码。
*请认真填写需求信息,我们会在24小时内与您取得联系。