前因
当INPUT[type=file]控件上已经选择过一次文件之后,再次点击它选择同一个文件时change事件就不会触发。因为第二次选择后里面的文字和第一次是一样的,没有改变。还有个更蛋疼情况是有些浏览器会自动记住控件上的文字,即使页面关闭后重新打开还是会恢复到原来的文字。这时候选择同路径的文件也不会触发change事件。
继续阅读
当INPUT[type=file]控件上已经选择过一次文件之后,再次点击它选择同一个文件时change事件就不会触发。因为第二次选择后里面的文字和第一次是一样的,没有改变。还有个更蛋疼情况是有些浏览器会自动记住控件上的文字,即使页面关闭后重新打开还是会恢复到原来的文字。这时候选择同路径的文件也不会触发change事件。
继续阅读
回调通知是指客户端在上传时指定服务端在处理完上传请求后,应该通知某个特定服务器,在该服务器确认接收了该回调后才将所有结果返回给客户端。
因为加入了回调请求和响应的过程,相比简单上传,使用回调通知机制一般会导致客户端花费更多的等待时间。
开发者可以要求七牛云存储在某文件上传完成后向特定的 URL 发起一个回调请求。七牛云存储会将该回调的响应内容作为文件上传响应的一部分一并返回给客户端。回调的流程如下:
只做一件事情,可以做的很精致。验证码,只是一个网站很小很小的一部分,有人有公司却做的体验非常棒。下边是网易易盾和极验两加公司做的验证码产品demo的链接:
网易易盾: http://dun.163.com/trial/jigsaw
极验:http://www.geetest.com/exp.html
极验提供了两种验证方式(拖动和点击),四种展现形式(float、popup、custom、bind),二次验证的服务以及多平台。以保障良好的安全以及体验。不过,按钮不能任意定义高度。免费产品也不能自定义图片。
继续阅读
在给网址做 登录注册 功能时,通常会用到ajax
。因为它不会刷新页面,给用户的体验很好。但会影响另外一个比较好的体验:浏览器不会弹出记住账号密码。
eg:
<div class="log-bodies">
<row>
<span>账号</span>
<input id="account" type="text" placeholder="请输入账号">
</row>
<row>
<span>密码</span>
<input id="password" type="password" placeholder="请输入密码">
</row>
<button class="log-btn">登录</button>
</div
$(".log-btn").click(function{
//do ajax post
});
方法1:
function Person()
{
var name;
Object.defineProperty(this, "name",{
set:function(value){
name = value;
},
get:function(){
return name;
}
})
}
defineProperty
是ECMAScript 5新增的特性。该方法有局限性。ie需要大于8以上的版本才可以。
方法2:
var name;
var Person = {
set name(value){
name = value;
},
get name(){
return name;
}
}
impress.js
是国外一位开发者受Prezi
启发,采用CSS3与JavaScript语言完成的一个可供开发者使用的表现层框架(演示工具)。
普通开发者可以利用impress.js自己开发出类似效果的演示工具,但性能比基于Flash的Prezi更优。其功能包括画布的无限旋转与缩放,任意角度放置任意大小的文字,CSS3 3D效果支持等。同时,也支持传统PowerPoint形式的幻灯演示。
目前impress.js是基于webkit
浏览器(Chrome、Safari)开发,而在其它基于非 webkit引擎,但支持 CSS3 3D 的浏览器也能正常运行。
官网:http://impress.github.io/impress.js/#/bored
王巍:http://about.onevcat.com/#/welcome
正逍遥:http://zhengxiaoyao0716.github.io/FunCodeImpress/#/bored
js
是一个自由,一切皆对象的脚本语言。如果说要去找面向对象的原生的package
,class
,那是没有的。但是,js
可以去封装。
w3school
这样定义的:prototype
属性使您有能力向对象添加属性和方法。这个是动态的,也就是什么时候都可以。每个对象都有prototype属性,它本身也是一个对象。如此循环下去就形成了一个prototype链,这个链当遇到链中的prototype为null
时即中止(Object默认的prototype为null)。
继续阅读