历史记录API类:History.js

History.js是一个操作历史记录API的JS类,支持所有浏览器,并且对jQuery、Zepto、MooTools等框架都有相应扩展。在开发单页应用项目时可以直接修改视图的URL,而无需再使用URL Hash的老办法进行视图管理。在本站简单的全站AJAX翻页效果一文中也使用了History.js。

History.js内置了pushState, replaceState, onPopState等几个方法,可以自动监听URL变化,进行对应的处理。

Github:History.js

简单的全站AJAX翻页效果

首先假设全站页面结构都如下:

整站页面都有固定的区块内容会改变。

通过js监听页面上所有的a标签点击事件:

推送历史记录需要用到 History.js

4个好用的JS联动选择插件

jQuery City Select

jQuery City Select

一个简单的jQuery省市联动插件,可以自定义JSON字典实现其他内容的联动选择菜单。

PCAS省、市、地区联动选择JS封装类

PCAS (Province City Area Selector 省、市、地区联动选择JS封装类

PCAS可能是国内使用人数最多的JS省市联动菜单封装类,也是使用方法最简单的省市联动菜单。不过作者已经很久没更新过地址库的数据了。

jQuery Dependent Selects

jQuery Dependent Selects

jQuery Dependent Selects只需要在option中指明各层级之间的依赖关系,就可以自动生成多级联动下拉菜单。在小型的项目里是个不错的选择。

LinkageSel无限级联动下拉菜单

Javascript Infinite Level Select 无限级联动下拉菜单

LinkageSel是我目前用过最强大的联动菜单控件,只需要通过设置参数就可以按你的需求生成强大的联动菜单。

用JS检测用户是否能打开国外网站

最近需要在一个页面上添加Facebook的赞按钮,可是这个大公司的网站居然有很多人都打不开,资源文件请求时间过长导致页面加载巨慢。为了减少对页面加载的影响,我写了一个JS脚本用来检测用户是否能打开Facebook。

通过加载一个www.facebook.com域名下的图片,并监听image的onload事件是否被触发,就可以确定用户是否能正常访问Facebook了。不过前提是这个文件必须是个图片,而且不出现4xx状态码。为了验证这个方法是否可行,可以用下面的代码进行测试。

Laravel生成验证码

在composer.json中增加依赖:

在命令行中切换到项目根目录,运行:

编辑app/config/app.php,增加配置项:

在app/controllers目录中建立ExtController.php

增加路由:

用到的库:

https://packagist.org/packages/gregwar/captcha

思路:

把生成的验证码加密后放到Session里,供验证用。同时使用独立的加密key增强安全性。

PHP通过文件signature识别文件格式

在很多PHP项目里,开发者都惯用扩展名来检测文件格式,在允许用户上传文件的项目中往往会因为检查不严格让恶意用户上传大量非法文件。在这样的项目里,通过文件signature检查文件格式是一个简易有效的解决方法。

 注:此方法不适合用来检测CSS、HTML、XML、CSV等plain text型文件,因为plain text并没有固定格式的signature。

更多的文件signature信息可以到 http://www.filesignatures.net/ 查询。