
javascipt
文章平均质量分 63
清箫
生命的可贵,在于自我实现;生命的欠缺,是努力的空间。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
利用javascript剪裁图片(也许CSDN也是如此实现图像上传剪裁)
javascript代码:function onCutPic(){ //显示的部分左上角: (10, 50), 右下角:(100, 80) cutPicture(document.getElementById("cutPic"), 10, 100, 80, 50);} html代码:原创 2008-12-30 21:00:00 · 2005 阅读 · 0 评论 -
为什么jQuery是用toString来判断数据类型,而不是typeof或instanceof
// Numberstypeof37 === 'number';typeof3.14 === 'number';typeofMath.LN2 === 'number';typeofInfinity === 'number';typeofNaN === 'number';// Despite being "Not-A-Number"typeofNumber(1) === 'number'原创 2013-01-10 11:41:46 · 15627 阅读 · 0 评论 -
鼠标事件比较与鼠标位置
Mouseenter和mouseover的区别这两个都是鼠标移入元素内部时触发,它们的区别是mouseenter事件没有冒泡阶段,而mouseover事件则有冒泡阶段,这是第一个区别。第二个区别是触发的几率不一样:鼠标从元素外进入元素内,一定会触发mouseenter,但不一定触发mouseover。因为mouseover只有当元素有空间被鼠标直接接触到才能触发。即使同时触发,它们的先后顺序在不同原创 2015-04-24 09:41:23 · 11052 阅读 · 2 评论 -
RequireJS
AMD异步模块定义(AMD)的整体目的是提供模块化的JavaScript解决方案。关键概念模块定义define( module_id /* optional */ , ["foo", "bar"] /* dependencies,optional */, function (foo, bar) {})["foo","bar"]是module依赖的其他模块原创 2014-03-20 14:52:17 · 11662 阅读 · 1 评论 -
DataTable在支持滚动时的实现方式与遗留问题
这里的DataTable指的是http://www.datatables.net/的DataTable工具。DataTable在实现时,一共使用了两种方式:l 支持水平或垂直滚动;l 不支持水平或垂直滚动;这两种方式的实现方式是完全不同的。后一种不支持滚动的DataTable,数据和列标题都是在同一个HTML Table元素中。这种永远也不会出现标题列和数据列对不齐的问题。原创 2013-10-10 16:56:10 · 15966 阅读 · 6 评论 -
JavaScript Date全解
Date构造函数New Date() | Date()没有参数默认就是系统当前时区的时间,结果:Sat Apr11 2015 16:42:09 GMT+0800 (China Standard Time)生成代表当前系统的时间,不用new也可以生成,Date本身就是个方法。New Date(milliseconds)这个毫秒参数是从1970-01-01 00:00:00到现在所经过的时间。New原创 2015-05-07 09:04:46 · 3859 阅读 · 0 评论 -
CommonJS简介及模块标准
JavaScript早期主要用于基于浏览器的应用,随着NodeJS的应用,JavaScript被大量应用于服务端应用。但因为客户端和服务端的不同,需要写多份不同的代码以适应客户端和服务端的不同。CommonJS是一种思想,它的终极目标是使应用程序开发者根据CommonJS API编写的JavaScript应用可以在不同的JavaScript解析器和HOST环境上运行。目前,有四大平台支持Commo原创 2015-06-03 16:11:08 · 13603 阅读 · 0 评论 -
异步模块定义AMD
全称为Asynchronous Module Definition,异步组件(或模块)定义。AMD是一种机制,使用这种机制,组件和它的依赖就可以实现异步加载。Define方法define(id?, dependencies?, factory);组件ID组件ID是组件的唯一标识符,在和组件ID一对一的脚本文件(一个脚本文件中只有一个define)中这个ID可以没有,而且最好没有。这是因为组件加载器原创 2015-06-10 17:47:16 · 4826 阅读 · 0 评论 -
元素样式控制
样式的优先级样式属性通过四种方式可以被添加,他们的优先级从高到低依次为:1. Inline Styles;2. Style Sheet Rules;3. HTML Attributes(比如fill,height, width等);4. HTML标签默认定义;通用Element.styleElement.style操作的是元素的styleat原创 2015-07-28 16:57:13 · 1866 阅读 · 1 评论 -
HTML焦点与键盘事件
所谓焦点就是用户当前正在操作的对象,可以是某个元素,也可能是某个浏览器中的tab或window。比如用鼠标点击输入框,那么输入框就会成为焦点。使用键盘上的Tab键,又可以把焦点转移到另外一个元素或浏览器的其他区域。通过鼠标和键盘都可以转移焦点,甚至编辑焦点元素。焦点元素同一时间一个document只能有一个元素成为焦点,这个焦点元素可以使用JavaScript访问:document.activeE原创 2015-04-20 16:46:50 · 20070 阅读 · 0 评论 -
JavaScript类继承实现之一
网上各博客论坛出现了很多JavaScript的类继承方法,浏览了一些,不是没注释,就是没有运行效果,于是自己写了个简洁易懂的版本,附带测试代码在最下面。刚不小心删除了该文章,因此重新补上,另外加强了示例。(function() { Function.prototype.extend = function(baseClass) { // this is a原创 2014-11-06 15:43:54 · 2498 阅读 · 1 评论 -
Requirejs常用配置和应用
requirejs、require方法冲突如果加载了多个requirejs脚本,每个requirejs会判断是否浏览器已经实现了require和define方法。如果浏览器已经自带require和define方法,或者之前已经有一个requirejs脚本执行,那么这个requirejs就会立刻停止执行。所以,即使页面上加载了多次requirejs脚本也不会有什么问题。配置Context我把cont原创 2016-01-08 10:41:34 · 14175 阅读 · 1 评论 -
jQuery Callbacks应用关键点
Callbacks是jQuery 1.7引入的方法,用于管理一系列使用相同参数的回调函数。所有回调函数(以下简称回调)保存在一个数组中,可以重复调用。其本质相当于一个回调函数列(List),因此可以做添加、删除、清空回调函数等操作。生成回调列(Callbacks)var callbacks = $.Callbacks();回调执行顺序回调保存在数组中,然后通过for循环遍历,所以列中的回调按照被添原创 2015-05-28 15:59:23 · 4417 阅读 · 1 评论 -
AngularJS模块详解
在angular中,模块可以是一个对象、一个方法或一个数组(数组的最后一个元素必须是方法)。后面要讲的模块属性和方法,都是针对通过angular.module()方法定义的模块而言的,我称之为angular模块。通过angular.module()方法定义的模块是唯一的,如果重复定义,后面的就会覆盖前面的定义。不是通过angular.module()定义的模块,比如一个方法或一个数组,这些模块也是原创 2016-03-23 13:54:59 · 13204 阅读 · 0 评论 -
Angular Scope解析与应用
Scope层级结构顶层服务对象$rootScope来源于ng模块,由$RootScopeProvider提供。因为ng模块是angular.bootstrap()执行时依赖的模块,所以在整个应用中都可以通过$rootScope引用,而且在这个应用中是唯一的。但唯一性仅限于单个应用内,因为服务都存在注入器中,而每个bootstrap应用有自己的注入器,所以,$rootScope作为一个服务,在不同的原创 2016-04-06 10:50:10 · 4765 阅读 · 0 评论 -
详解window.history
Window.history保存用户在一个会话期间的网站访问记录,用户每次访问一个新的URL即创建一个新的历史记录。history.go()、history.back()、history.forward()history.back()和history.forward()分别表示向后一页和向前一页。history.go(num)表示向前或向后翻多少页,num为正数表示向前翻,为负数则向后翻。Hist原创 2016-04-06 15:32:33 · 24848 阅读 · 1 评论 -
归并排序-迭代法与递归法
注意:这个方法不改变原数组,而是生成一个新的数组。Array.prototype.mergeSort = function(fun/*, thisArg*/) { 'use strict'; if (this === void 0 || this === null) { throw new TypeError(); } if (fun && typeof fun !==原创 2016-03-28 15:34:42 · 1839 阅读 · 0 评论 -
RegExp在IE8等浏览器中的兼容性问题
这里讲的兼容性问题主要指String的API在正则表达式的处理上不同。匹配结果的兼容性第一个问题:在IE",,ab,,".split(","); // output ["","","ab","",""]",,ab,,".split(/,/); // output ["ab"]第二个问题:正则表达式中可能有分组,但是这个分组可能并没有参与(也就是没有匹配到任何子字符串)。关于这个分组的结果:IE"原创 2016-05-12 18:28:12 · 12558 阅读 · 0 评论 -
offsetHeight, clientHeight与scrollHeight的区别
在网上搜了一下,结论非常笼统,讲IE从不讲版本,因此自己做了测试并上传结论。以下结论皆是在标准模式下测试通过的,没有测试quirk模式。clientHeight大部分浏览器对 clientHeight 都没有什么异议,都认为是内容可视区域的高度,也就是说页面浏览器中可以看到内容的这个区域的高度,即然是指可看到内容的区域,滚动条不算在内。但要注意padding是算在内。其计算方式原创 2013-03-05 16:26:00 · 33502 阅读 · 2 评论 -
view-source协议
view-source是一种协议,早期基本上每个浏览器都支持这个协议。后来Microsoft考虑安全性,对于WindowsXP pack2以及更高版本以后IE就不再支持此协议。这个方法现在只能用在FireFox浏览器上使用了! 如果要在IE下查看源代码,只能使用查看中的"查看源代码"命令. 以前的使用方法:在浏览器地址栏中输入 view-source: sURL 回车即可翻译 2009-01-06 22:41:00 · 8526 阅读 · 0 评论 -
window.open()打开窗口的几种方式
1. 在当前窗口打开百度,并且使URL地址出现在搜索栏中.window.open("http://www.baidu.com/", "_search");window.open("http://www.baidu.com/", "_self"); 2. 在一个新的窗口打开百度window.open("http://www.baidu.com/", "_blank");原创 2008-12-31 23:06:00 · 94036 阅读 · 1 评论 -
document.createElement()介绍与用法
在以前的IE4中, document只能创建img, area, option三种元素, 到了IE5, 一般可以编程创建几乎所以元素, 除了frame和iframe. 而且这些新的创建的元素的属性都是可读写的, 并且可以编程随意访问. 但是你必须得先把他们先回到他们相应的集合中或者当前文档中你才能使用, 否则会报错. 添加新的元素到当前文档, 可以使用insertBefore或appendC翻译 2009-01-11 23:30:00 · 21106 阅读 · 1 评论 -
动态为事件添加js代码示例
attachEvent("onblur", blur);function blur(){ document.all.form.username.attachEvent("onblur", blur); if(event.srcElement == document.all.form.username){ alert("efewef"); } } 其执行顺序为:先执行原创 2009-02-14 23:05:00 · 1361 阅读 · 0 评论 -
如何获取某年某月的最大天数
var date = new Date(2008, 1, 0);alert(date.getDate()); 输出: 31.原创 2008-12-21 22:47:00 · 1554 阅读 · 0 评论 -
如何自己写一个日历
在很多网站都有自己的一个日历工具, 有些看起来挺酷的, 肯定有很多人想学. 但在这里我不是要写一个, 而是给出它的设计过程, 即它的灵魂. 第一步: 首先我们要选择要显示的年份和月份.第二步: 获得这个月的最大天数(参照前面一篇文章);第三步: 创建一个日期对象, 这个日期对象为这个月的第一天. 第四步: 得到这个日期对象的星期数(即星期几).第五步: 知道这个月的第一天的原创 2008-12-21 23:19:00 · 2954 阅读 · 0 评论 -
几个通用的函数
/* 功能:通用JavaScript脚本函数库 包括: 1.Trim(str)--去除字符串两边的空格 2.XMLEncode(str)--对字符串进行XML编码 3.IsEmpty(obj)--验证输入框是否为空 4.IsInt(objStr,sign,zero)--验证是否为整数 5.IsFloat(objStr,sign,zero)--验证是否为浮点数*//*====转载 2009-05-30 16:30:00 · 1263 阅读 · 0 评论 -
网页特效代码
1.屏蔽右键才有效,注意returnValue的V是大写 -->也可以用于table框架中:no或no 2.取消选取,防止复制才有效 --> 3.不准粘贴 4.禁止复制、剪切 5.地址栏前换成自己的图标在IE下不可以,火狐下可以 --> 6.添加收藏夹网页书签图标 7.保护自己的网页不是嵌入其它网页中原创 2009-06-15 16:15:00 · 1372 阅读 · 0 评论 -
Form Reset Function
Reset按钮,这个在现在的项目中几乎已经不用了,因为用户很容易点击到reset按钮,从而使自己陷入懊恼,不得不重新填表单。不过form.reset()在通过Ajax提交请求的页面中,还是有人使用。比如成功提交之后,ajax表单应该被重置,这样下次重新显示表单时,表单是空的或还原为原始值。很可惜,form.reset()浏览器不兼容,不同的浏览器在实现reset时,使用了不同的策略。FF在原创 2012-06-05 12:18:47 · 5903 阅读 · 1 评论 -
什么时候使用JavaScript
1.数据输入验证:表单的数据在提交给服务器进行处理前使用客户端脚本对用户输入的数据进行验证.2.动态HTML交互:DHTML有能力精确定位元素在网页上的位置,但是如果需要使元素在网页上动态移动则需要.3.CGI原型(我也不懂):一般用于降低不同浏览器或版本的潜在不兼容性.4.降低服务器的繁忙:使用客户端JavaScript可以减轻服务器的负担,还可以提高用户端的响应速度.5.动态网原创 2009-05-31 22:46:00 · 2490 阅读 · 3 评论 -
JavaScript严格模式
Strict mode是JavaScript1.8.5引进的技术,但还没有浏览器确实可靠的实现了严格模式,所以使用时要小心并且多测试。Strict mode可以应用于整个脚本,也可以适合于单个函数。激活strict mode整个脚本在其它所有语句前,放置”use strict”;单个函数把”use strict;放置在函数体的最前面。严格模式中的变化把mistake原创 2012-12-21 15:43:18 · 1666 阅读 · 0 评论 -
闭包
数学数学中,对一个集合的成员进行某种运算,生成的结果仍然是这个集合中的成员,则该集合被称为在某个运算下闭合。例如,实数在减法下闭合,但自然数不行:自然数3和7的减法3-7的结果不是自然数。类似的,一个集体被称为在某些运算的搜集下闭合,如果它在每个运算(前面提及的某些运算中的每个)下独立闭合。闭包性质:一个集合在某个运算或某些运算的搜集下闭合,则称为满足闭包性质。计算机科学闭原创 2012-12-18 14:44:17 · 1314 阅读 · 0 评论 -
jQuery插件 SlabText的实现原理
这个算法是针对英文文本而言的。第一步:初始计算初始计算将需要用到3个常量来约束初始计算的结果。第一个是字体单个字符的平均长宽比。因为字符的高度容易获取,一行的字数也容易获取,难的是一行中每个字符的宽度。实现:1、假设某种字体的平均长度比为.44518217(每种字体它的平均字符长度比通常是不一样的)。实现:2、字符的高度其实就是字体大小,也就是font-size原创 2013-01-14 16:48:29 · 1712 阅读 · 0 评论 -
WEB Storage
目前标准的有sessionStorage和localStorage。sessionStorage在浏览器打开期间,页面会话是持续存在的,哪怕页面重新加载(reload)或页面还原(restore)。只要是同一个站点的页面,不管打开多少个窗口,它们之间都共享同一个sessionStorage。之所以有sessionStorage,是因为cookie在session数据存储方面做的不到位,原创 2013-02-18 17:47:04 · 2407 阅读 · 0 评论 -
获取元素在body中的绝对位置
原理: body的offsetParent返回的是null。/** * Get element's absolute coordinate in body */window.getAbsCoordinates=function(e){ var pos = {top: 0, left: 0}; while(e){ pos.left += e.原创 2013-03-12 15:58:24 · 3254 阅读 · 0 评论 -
初步认识Backbone.js
作为一个轻量级MVC框架,如果是与后端交互比较频繁的站点使用这个框架,其效果是很显著的。从我个人角度而言,这个框架适合微博这类的实时性比较强并且牵扯用户信息比较多的网站,据说豆瓣的阿尔法城也是用这个框架做的。如果从它的原理出发,我觉得是模仿或抄袭了ActionScript的PureMVC框架,但又有自己的特点,因为它融合了HTML DOM的特征,这点从它视图的events中可以看出。框架应原创 2013-03-13 00:31:04 · 2721 阅读 · 0 评论 -
深入解析DataTable如何过滤
此DataTable指的是SpryMedia专为HTML Table设计和开发的页面插件,官方站点是:http://legacy.datatables.net/index。关于oSettings.aiDisplayMaster, oSettings.aiDisplay与oSettings.aoData无论是从JSON中获取的行数据,还是从DOM元素中获取的行数据,在表初始化之后,皆存储原创 2014-07-03 15:49:09 · 15483 阅读 · 2 评论 -
package.json字段全解
Name必须字段。小提示:l 不要在name中包含js, node字样;l 这个名字最终会是URL的一部分,命令行的参数,目录名,所以不能以点号或下划线开头;l 这个名字可能在require()方法中被调用,所以应该尽可能短;Version必须字段。Description可选字段,必须是字符串。npm search的时候会用到。Keywords可选原创 2014-09-15 16:30:49 · 94105 阅读 · 2 评论