自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhouruitao的专栏

关注Web前端技术

  • 博客(465)
  • 收藏
  • 关注

原创 一道计算学生平均分的前端算法题

对一群学生的所有数值属性(整形或浮点)求均值

2023-05-15 10:53:30 233 1

JavaScript获取图片的原始尺寸

页面里的img元素,想要获取它的原始尺寸,以宽度为例可能首先想到的就是width,如下<img src="http://img11.360buyimg.com/da/g14/M07/01/0E/rBEhVlNhh8wIAAAAAADmFBLo1twAAM26gOmCgYAAOYs716.jpg"><script> var img = document.g...

2016-04-20 10:30:00 273

JavaScript判断图片是否加载完成的三种方式

有时需要获取图片的尺寸,这需要在图片加载完成以后才可以。有三种方式实现,下面一一介绍。 一、load事件<!DOCTYPE HTML><html><head> <meta charset="utf-8"> <title>img - load event</title>&

2016-04-20 10:22:28 297

Mac OS X 设置取消开机自动启动

1. 启动系统设置 (System Preferences)  2. 点以上截图的 用户/组 (User&Groups) 3. 切换到 “登录选项” (Login Items) 可以看到有safari、firefox、sublime text是默认开机启动的,点击左下角的“+-” 即可添加或删除开机启动程序。...

2016-03-21 10:30:22 1168

Mac SVN ignore 等相关

OSX自带了SVN命令行,通过终端就可以使用了。 一、SVN ignoreMac的SVN想把node_modules 忽略,即svn status时(svn st缩写)不显示node_nodules。百度了下几篇博文,使用命令行 svn propset svn:ignore 'node_modules'http://spiritfrog.iteye.com/blog/445425...

2016-03-21 10:27:52 259

JavaScript中奇葩的假值

通常在以下语句结构中需要判断真假if分支语句while循环语句for里的第二个语句如if (boo) { // do something} while (boo) { // do something}JavaScript中有 6 个值为“假”,这六个值是falsenullundefined0'' (空字符串)...

2016-03-14 17:43:13 161

世界上最短的数字判断代码

我们知道JavaScript提供了typeof运算符,因此最容易想到的是用typeof来判断是否是number类型function isNumber(obj) { return typeof obj === 'number'} 这个函数对于整数和浮点数都没有问题,但对于NaN值也返回true这让人感到不爽,毕竟用isNumber判断通过后谁也不会用NaN去做算术运算。 ...

2016-03-14 16:21:08 193

HTML5 datalist 标签

以前需要用JS写一个自动完成组件(Suggest),很费劲。HTML5时代则不用了,直接使用datalist标签,直接减少了工作量。如下<!DOCTYPE html><html> <head> <title>HTML5 datalist tag</title> <meta charset="utf-...

2015-07-09 14:39:19 173

利用keydown事件阻止用户输入

先了解下各事件的区别keydown:在控件有焦点的情况下按下键时发生keypress:在控件有焦点的情况下按下键时发生keyup:   在控件有焦点的情况下释放键时发生意义keypress主要用来接收字母、数字等ANSI字符。keydown 和 keyup 事件过程通常可以捕获键盘除了PrScrn所有按键 (这里不讨论特殊键盘的特殊键)keypress 只能捕获单个...

2015-07-09 14:36:02 1162

如何自定义Grunt任务

任务(Tasks)是grunt的核心概念,你所做的很多工作比如资源合并(concat)、压缩(uglify)都是在配置任务。每次grunt运行的时候,你指定的一个或多个任务也在运行,如果你没有指定任务,那么一个默认名为“default”的任务将自动运行。 有时我们需要写一些自己的grunt任务,下面是一个具体例子 一、准备1. 新建一个目录g12. 新建package.js...

2015-06-04 14:53:31 129

如何定制你自己的jQuery

jQuery随着版本的不断升级代码量也随之增加,从1.0.0的不到两千行到现在的1.10.2已经突破1万行。新的API不断增加,但有些在项目中并没有用到。jQuery团队很早就考虑到这一点,按模块来划分,并可以按需定制自己的jQuery。 jQuery从1.9开始构建工具迁移到grunt。grunt是基于node的,因此需要安装node,下面详细介绍。一、安装node很简单...

2015-01-12 08:38:07 201

getBoundingClientRect在IE9/10里的bug

getBoundingClientRect可以获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置,最早在IE中实现,后其它浏览器均已实现。 但它在IE9,10中有个bug,当出现垂直滚动条时,获取top总为0。其它浏览器则能正常获取。代码如下<!DOCTYPE html><html> <head> <m...

2015-01-12 08:30:07 197

Node.js的模块载入方式与机制

Node.js中模块可以通过文件路径或名字获取模块的引用。模块的引用会映射到一个js文件路径,除非它是一个Node内置模块。Node的内置模块公开了一些常用的API给开发者,并且它们在Node进程开始的时候就预加载了。 其它的如通过NPM安装的第三方模块(third-party modules)或本地模块(local modules),每个模块都会暴露一个公开的API。以便开发者可以导...

2014-12-26 06:18:48 608

JavaScript中的直接量与初始器的区别

很多代码优化及公司规范都会提到写对象不应该var obj = new Object()而应该var obj = {}写数组不应该var arr = new Array()而应该var arr = []很多书籍《JavaScript高级程序设计》《JavaScript权威指南》也建议使用对象、数组直接量而别使用new方式。这里就引出了直接量(Literals)...

2014-11-08 06:09:14 140

JavaScript中的不可见数据类型

JS提供了一些内置对象、函数和构造器供我们编程,如Math、parseInt、Object、Array等。这些都是可见的,编程时可以使用的。比如我可以new Object 或 new Array。 有一些则是不可见的,这些对象只能由引擎在特殊的情形提供。这些类型的对象往往还被消减了一些功能。下面列举一些 一、Arguments 类型Arguments 类型 不能由程序员手动...

2014-11-02 11:08:17 165

原创 ES5严格模式

严格模式(Strict mode)是由ECMA-262规范定义的新兴JavaScript标准,第五版发布于2009年12月。旨在改善错误检查功能并且标识可能不会延续到未来JavaScript版本的脚本。ES5严格模式是限制性更强的JavaScript变体,它与常规JavaScript的语义不同,其分析更为严格。 目前,除了IE6-9,其它浏览器均已支持ES5严格模式。 一、严格...

2014-10-08 18:20:37 102

仅Firefox中A元素包含Select时点击Select不能选择option

这是在使用京东的一个日期组件时碰到的bug,重现bug的代码精简如下<!DOCTYPE HTML><html><head> <title> 仅Firefox中A元素包含Select时点击Select不能选择option </title></head><body> &

2014-09-26 11:03:50 137

给Apache增加SSI支持(shtml的奥秘)

什么是SSI? SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思。从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针。SSI具有强大的功能,只要使用一条简单的SSI命令就可以实现整个网站的内容更新,时间和日期的动态显示,以及执行shell和CGI脚本程序等复杂的功能。 Apache默认是不支持SSI的,需要我们更改httpd.co...

2014-09-24 10:59:56 120

Raphael实现商品来源去向图

数据可视化 是很多大数据分析的一项重要工作,甚至有专门的团队做这项工作。Web上的各种图形(饼状图,柱状图等)一直被flash所垄断,随着HTML5的发展,SVG和Canvas也逐渐走上舞台。这不,产品要求跨平台,这次不能使用flash。考虑到第一次接触,开发周期较短,评估后决定使用Raphael.js。 Raphael,意为拉斐尔(姓氏),另外拉斐尔也是意大利画家、建筑学家。Rapha...

2014-09-17 18:11:49 295

有趣的居中方式

古老的center标签已经废弃了,css的text-align取代了它。 一、text-align 可以使行内元素居中,也可以使块级元素中的文本居中如下代码<div style="width:400px;border:1px solid gray;padding:5px;text-align:center;"> <span style="backgro...

2014-09-11 10:16:00 101

APMServ 配置记录

下载版本是5.2.6,它采用压缩率更高的7zip 解压后拷贝到c盘 点击APMServ.exe就可以启动了 注意:1. SSL 有时需要关掉,否则apache起不来2. 多数时候我只用apache,因此MySQL不打勾了3. 有时还出现 “You don't have permission to access / on this server.”  提示。查了...

2014-08-08 11:41:52 157

JavaScript生成GUID的算法

全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) 。GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中的 x 是 0-9 或 a-f 范围内的一个32位十六进制数。在理想情...

2014-07-16 14:25:31 507

利用apply和arguments复用方法

首先,有个单例对象,它上面挂了很多静态工具方法。其中有一个是each,用来遍历数组或对象。var nativeForEach = [].forEachvar nativeMap = [].mapvar util = { each: function (obj, iterator, context) { if (obj == null) return ...

2014-07-11 10:05:19 92

软件复用的几种方式

软件复用的好处有很多 一、提高工作效率这条自不必说,比如在项目A中你写一个Ajax模块,A完工后启动了项目B,在B中就可以直接复用项目A的模块了。一个可复用的软件可以为将来节省费用,被服用的频率越高,组件的初始开发成本就越低。 二、提高软件质量可复用的软件总比不能复用的有更多的质量保障。因为可复用的软件在不断的复用过程中把一些bug,缺陷都很快的排除了。因此可复用的软件...

2014-06-20 05:39:17 785

软件的模块化开发

什么是模块化模块化这个词最早出现在研究工程设计中的《Design Rules》,这本探路性质的书中。其后模块化原则还只是作为计算机科学的理论,尚不是工程实践。此时硬件的模块化一直是工程技术的基石之一。如标准螺纹、汽车组件、计算机硬件组件等。软件模块化的原则也是随着软件的复杂性诞生的。从开始的机器码、子程序划分、库、框架、再到分布在成千上万公里的互联网上主机上的程序库。模块化是解决软件复...

2014-06-13 06:55:18 364

原创 IE11的API变化

IE11已经登陆Win8.1,它的API有了很大变更 一、User-agent字符串的更改IE10的是Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0) IE11则是Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like...

2014-06-10 15:40:33 138

JavaScript中点号“.”的多义性

点号「.」在JavaScript中有两种语义语义1、表示算术中的小数点(浮点数),如 2.5语义2、取对象属性、方法,如 [].push(2) 这几乎没有任何难理解的地方,但下面这个问题则很有趣。// 这行代码会如何执行1.toString();Firebug 中如下这里的点号表达的是上述的语义1,因此点号后面必须跟一个数字,这里跟的是toString,报语法...

2014-06-07 19:42:25 131

各代程序设计语言拓扑

Wegner根据语言的功能和产生的时间,将一些流行的高级语言进行了分类。 第一代 (1954-1958)Fortran IAlgol 58FlowmaticIPL V 第二代 (1959-1961)Fortran IIAlgol 60CobolLisp 第三代 (1962-1970)PL/1Algol 68Pasca...

2014-06-06 10:26:59 129

Button未设type属性时在非IE6/7中具有submit特性

如下<!DOCTYPE html><html> <head> <title>Button在Form中具有submit的特性</title> <meta charset="utf-8"> </head> <body> &l

2014-06-04 12:01:19 105

Firefox中使用location.hash会自动decodeURI Bug

用一中文单词测试,比如“昌平” encodeURI后为“%E6%98%8C%E5%B9%B3”。在各浏览器地址栏输入: http://start.firefoxchina.cn/#%E6%98%8C%E5%B9%B3 从控制台获取hash,各浏览器表现如下 Firefox21 Chrome27/Safari5 IE9/10/11 可以看见,只有Fire...

2014-06-03 11:26:59 155

Backbone模型

现在进入最关键的组件 - 模型。模型用来存储应用的所有数据,以及直接和数据操作相关的逻辑。Backbone中的模型类是Backbone.Model,它包含了数据存储,数据验证,以及数据发生变动时触发相关动作。一般可以把模型与后端绑定(ORM),模型改变的同时向后端发起请求(Ajax)更新数据(数据库)。也有把模型和DOM元素绑定,模型改变时更新HTML界面。 一、模型可以直接n...

2014-05-05 11:09:43 147

Backbone.sync-将模型同步到服务器

默认情况下,只要保存模型(Model/Collection的sync方法),Backbone就会Ajax请求把模型持久化到服务器端。 有以下几点sync方法把model持久化存储到服务器端,你可以重写该方法的实现方式,它默认使用jQuery或zepto的$.ajax整个Backbone,只有Model和Collection的sync会调用Backbone.sync请求类型...

2014-05-05 10:52:21 164

Backbone事件模块

事件模块Backbone.Events是Backbone的核心,Model、Collection、View都依赖它。此外,事件模块的所有方法都挂在了全局的Backbone上,如果你的代码中需要用到自定义事件(实现观察者模式),可以直接使用它。 标示符Events是内部的一个引用,为讨论方便,这里也省去了前缀Backbone,这篇文章会从以下几个点分析Events APIE...

2014-04-29 13:58:46 125

Backbone的写类方式

从两个角度去讨论Backbone的写类方式Backbone内部的写类方式,Backbone自身的类如Model、Collection、View等是如何定义的Backbone外部的写类方式,如何使用Backbone提供的类来定义自己的类一、Backbone内部的写类方式Backbone提供给客户端程序员的类都是通过 构造函数+原型 的方式写的,Backbone.Model的代...

2014-04-22 07:58:48 95

掺合模式(Mixin)

Mixin是JavaScript中用的最普遍的模式,几乎所有流行类库都会有Mixin的实现。Mixin是掺合,混合,糅合的意思,即可以就任意一个对象的全部或部分属性拷贝到另一个对象上。从提供的接口来看,有的是对对象的操作,有的是对类的操作。对类的操作又称为掺元类(Mixin classes) 一、掺合对象 (Mixin object)先看最简单的mixin实现funct...

2014-03-20 10:20:05 173

冗余换性能-从Backbone的triggerEvents说开了去

Backbone是一个优秀的前端MVC库,它的代码质量必定可靠。阅读过程中发现了函数triggerEvents有点意思,初看会以为一些代码是多余的。var triggerEvents = function(events, args) { var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args...

2014-02-19 11:03:12 101

windows下安装dig

Dig是linux中的域名解析工具,功能比nslookup强很多,使用也很方便,不用象nslookup总是set不停。Dig是domain information groper的缩写,知道了来源想必大家也就容易记住这条命令了。Dig现在已经有人移植到了window上,可以在这里下载。 这里以win7系统演示 一,下载后直接解压到C盘  二、下载 CmdHereA...

2014-02-17 15:08:18 162

Sublime text jQuery插件

一、插件下载 如果访问不了,可以去这里下载。 二、解压 三、打开Sublime, 选择 Prefreences  > Browse Packgaes,将解压后的文件夹复制到Packages目录,然后改名jQuery  四、重启Sublime Text2,按Ctrl+Shift+p,选择set Syntax:jQuery,回车  五、输...

2014-02-09 09:37:52 278

Sublime Text3 中安装 Emmet

如果你从事前端开发或者web开发的话,一定听说过Zen coding - 一种快速编写HTML/CSS代码的方法。它使用仿CSS选择器的语法来快速开发HTML和CSS - 由Sergey Chikuyonok开发。现在它改名为了Emmet,并且搭建了一个新的网站:docs.emmet.io 下面记录下安装步骤 1、git方式下载Packages Control命令行cd到S...

2014-01-29 13:41:48 139

SpaceSniffer — 找出侵占磁盘空间的罪魁祸首

SpaceSniffer 是一个运行于 Windows 下的磁盘空间占用查看工具。打开后,各种超大的文件全部浮出水面,而且 SpaceSniffer 支持直接选中之后的 Windows 右键菜单,这样就可以直接删除了(当然,不按住 Shift 的话最后还得清空回收站)。   可以看到pagefile.sys和hiberfil.sys占用的比较多,以前提到过。 官网...

2014-01-28 08:22:55 437

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除