« Posts under Web Development

在 JavaScript 中判断“空值”

有时候我们会遇到这样的情况:在一些前端控件要提交数据到服务器端的数据验证过程中,需要判断提交的数据是否为空。如果是普通表单的字符串数据,只需要在 trim 后判断 length 即可,而这里需要的数据可以是各种不同的类型(数字、字符串、数组、对象等等),通过 JSON.stringify(data) 进行序列化后再传递。

在这里定义如下的数据值为“空值”:

  • undefined
  • null
  • 空字符串及纯空白字符串:''、'    ' 等。
  • 空数组:[]
  • 空对象:{}

对于除此以外的数据值,均认为不为空。

»Read More

Firefox下用Flash上传文件的session陷阱

这几天在项目中遇到的问题,稍微整理一下。

HTML 表单是我们常用来进行浏览器与服务器数据交互的途径,除了传递普通的文本数据,通过 type="file" 的 input 控件,我们还可以向服务器发送文件。但在目前的实际使用中,基于 HTML 表单的文件选择框有着下面两个不尽人意之处:

  1. 一次只能选择一个文件
  2. 上传过程中,不能获取文件上传的进度

对于文件选择的数量,事实上在 HTML4.01 规范中对文件选择框的描述虽然没有明确提出可以同时选择多个文件,但从其用词可以看出,文件选择控件事实上是应该支持同时选择多个文件的: »Read More

闲话多提交按钮的HTML表单

在 Web 应用中,最常用的服务器端与客户端的数据交互是通过提交 HTML 表单实现的。以 HTML 4.01 为例,规定当表单提交时,会将 <form> 元素中的 Successful controls 的当前取值提交到服务器。所谓成功控件需要有以下几个条件(但不仅限于此):

  1. 必须有控件名字,即必须包含 name 属性
  2. 如果表单中有多个提交按钮,只有被点击的那个按钮可以是成功的
  3. 不能是禁用状态,即不含 disabled 属性
  4. 不是 Reset button

现在我们考虑一下这样的场景,在某个表单中我们需要用到多个提交按钮(Submit button),就如同 WordPress 后台写文章那样的表单,我们在编辑完文章内容后,可以选择保存草稿或是直接发布。下面图中所示是一个简化的发布页面,可以填写文章标题、内容之后选某一种提交形式: »Read More

把网站做成App II

上一篇里面我们介绍了怎么增加任务,这一篇里面将介绍怎么在IE9中增加缩略图控件。

完成之后的效果会是这个样子。

»Read More

把网站做成App I

IE9是个好东西,但更好的一点是Win7和IE9的组合把Web应用app化实现得更彻底了。在接下来的几篇中会简单描述下怎么做这么个事情。

首先我们将在页首的meta里面填加一点东西,比如在Lync.in里面,我们加上这么几行。

HTML
<meta name="msapplication-task" content="name=About; action-uri=http://lync.in/about/; icon-uri=favicon.ico" />
<meta name="msapplication-task" content="name=Projects; action-uri=http://lync.in/projects/; icon-uri=favicon.ico" />

»Read More