
原生javascript
woshifan1989
WEB前端小友
展开
-
深刻理解闭包
最近在网上查阅了不少Javascript闭包(closure)相关的资料,写的大多是非常的学术和专业。对于初学者来说别说理解闭包了,就连文字叙述都很难看懂。撰写此文的目的就是用最通俗的文字揭开Javascript闭包的真实面目。 一、什么是闭包? “官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。转载 2012-07-09 17:09:45 · 468 阅读 · 0 评论 -
js代码注释规范
注释的主要规则如下:公共组件和各栏目的维护者都需要在文件头部加上注释说明: /** *文件用途说明 *作者姓名 *联系方式 *制作日期 **/大的模块注释方法: //========原创 2013-03-09 11:37:00 · 12724 阅读 · 0 评论 -
一个简单的setTimeout模拟setInterval的例子
function fun() { //....do something; setTimeout(fun, 1000);}原创 2013-03-01 11:13:07 · 876 阅读 · 0 评论 -
javascript事件模型解析
在各种浏览器中存在三种事件模型:原始事件模型( original event model),DOM2事件模型,IE事件模型.其中原始的事件模型被所有浏览器所支持,而DOM2中所定义的事件模型目前被除了IE以外的所有主流浏览器支持.1.原始事件模型其事件类型:分为"输入事件(如onclicki)"和"语义事件(如onsubmit)"事件程序的注册可以以下几种方式:原创 2013-03-15 16:08:37 · 516 阅读 · 0 评论 -
js-获取鼠标光标相对于整个页面的当前位置
*{margin:0;padding:0;} function getEvent(e) { return e || window.event; } function getX(e) { var e = getEve原创 2013-03-16 21:29:21 · 2090 阅读 · 0 评论 -
数组-去掉重复内容
Array.prototype.unip = function () { var temp = {}, len = this.length; for (var i = 0; i if (typeof temp[this[i]] == "undefined") { temp[t原创 2013-04-15 10:21:53 · 530 阅读 · 0 评论 -
对象深拷贝和浅拷贝
function extendCopy(p) { var c = {}; for (var i in p) { c[i] = p[i]; } c.uber = p; return c; }但是,这样的拷贝有一个问题。那就是,如果父对象的属性等于数组或另一个对象,那么实际原创 2013-04-16 12:38:03 · 580 阅读 · 0 评论 -
hashchange实现ajax无刷新回退
hashchange,一提hash前端GG、MM们都不稀奇,但是hashchange就鲜有人知了在一次面试过程中面试官问道这么样实现ajax回退,这个问题当时闷了,下面附上具体代码,以备后用: changevar i=0, url; var show = function(num) { if (num == 0) {原创 2013-05-09 18:57:19 · 1905 阅读 · 1 评论 -
序列化json的函数
var param = function(){ this.str = ""; }; param.prototype.doinit = function(obj){ if (obj &&(obj.constructor === Array || obj.constructor === Object)) {原创 2013-05-15 16:29:37 · 562 阅读 · 0 评论 -
截取location.search,转换为一个对象
截取location.search,转换为一个对象:function formatSearch(se){ if (typeof se !== "undefined") { se = se.substr(1); var arr = se.split("&"),原创 2013-05-31 09:27:51 · 2676 阅读 · 0 评论 -
原生js实现class的添加和删除
function hasClass( elements,cName ){ return !!elements.className.match( new RegExp( "(\\s|^)" + cName + "(\\s|$)") ); }; function addClass( elements,cName ){ if( !hasClass( elements,cNa原创 2014-03-24 16:06:30 · 20955 阅读 · 0 评论 -
浏览器检测IE(6、7、8、9、10)、chrome、ff、opera、safari、iOS、android
var d = {}; d.haspointerlock = "pointerLockElement" in document || "mozPointerLockElement" in document || "webkitPointerLockElement" in document; d.isopera = ("opera" in window); d.i转载 2014-06-17 10:05:46 · 1284 阅读 · 0 评论 -
插件规范定义
/* * Support for AMD, CMD */;(function( window, document, undefined ) {(function( factory ) { "use strict"; if ( typeof define === 'function' && define.amd ) { // Define as an A原创 2014-08-28 10:43:32 · 775 阅读 · 0 评论 -
javascript之Array
1. concat 链接两个或者多个数组,并返回数组结果。 参数可以是各种类型的,即:数字、字符串、function、Eegexp等,但是返回的绝对是一个一维数组,并且用来链接的数组不会变;2. pop 数组末尾删除一项,并且返回被删除的项,与shift相对应;3. shift 数组第一项被删除,并且被返回,与pop对应;4. push 在数组最后添加一项或者多项,并且返回原创 2014-12-10 16:48:45 · 473 阅读 · 0 评论 -
本地cookie的读、写、删除
//操作cookie,提供读、写、删除 //document.cookie = "cookieName=cookieValue; expirationdata=timeValue; path=pathValue"; var GLOBAL = {}; GLOBAL.cookie = { //读取 read原创 2013-03-09 10:07:34 · 1197 阅读 · 0 评论 -
一个异步加载js的函数
(function() { function async_load(){ var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = 'http://yourdomain.com/原创 2013-01-13 19:09:21 · 341 阅读 · 0 评论 -
如何获取目标对象时间源
一段代码,在不同浏览器中获取目标对象事件源:function getTarget(e){var event = window.event || e;var target = event.target || event.srcElement;alert(target.tagName);}这段代码的作用是先获取事件对象,然后获取对象事件源;注意:标准浏览器有原生的事件对象,原创 2012-07-12 11:25:25 · 640 阅读 · 1 评论 -
DOM操作——怎样添加、移除、移动、复制、创建和查找节点。
(1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 createTextNode() //创建一个文本节点(2)添加、移除、替换、插入 appendChild() removeChild() repla原创 2012-07-13 17:44:31 · 5250 阅读 · 0 评论 -
日期先后比较
/* @判断两个时间先后 时间格式2012-01-01 10:20:20 @基于jQuery @editor fhw @返回值 start true */ function compareTime(startTime,endTime){ var start = $("#startTim原创 2012-07-23 13:13:38 · 574 阅读 · 0 评论 -
认识 XHTML
1.首先解释一下什么是XHTML: XHTML是一种扩展超文本标签语言,目标是取代html,是更严格更纯净更严谨的html。2.语法: (1).属性名称必须为小写 (2).属性值使用双引号 (3).属性简写是不允许的 wrong-- right-- (4).用id属性来替代name属性 注意:为了版本比较低的浏览器,你应该同时使用name和id属性,并原创 2012-07-27 10:08:45 · 269 阅读 · 0 评论 -
XSS 注入
XSS注入的本质就是根据用户的输入,无形中生成一段可执行非法的js代码常见的注入:1.只有IE6和IE7 :UTF7-XSS不防在IE6或者IE7下输入这样一段代码:+/v8 +ADw-script+AD4-alert(document.location)+ADw-/script+AD4-发现会生成这样一段代码:alert(document.location)原创 2012-09-04 10:56:58 · 2470 阅读 · 0 评论 -
js编码方式详解
js 对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent1、 传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。 例如:document.wri原创 2012-08-27 13:05:20 · 522 阅读 · 0 评论 -
不同浏览器对window.event的理解
1.FF不理解window.event ,如果alert(window.event)// undefined;2.chrome、safari、opera、ie都理解window.event,但是alert(window.event== window.event),ie下会是false,而其他几个会是true;3.ie只能通过window.event获得事件对象,但是标准浏览器都可以通过函数原创 2012-09-13 14:35:49 · 660 阅读 · 0 评论 -
获取当天是星期几(热门前端面试题)
1.var week = "今天是星期" + "日一二三四五六".charAt((new Date).getDay());知识点:getDay()方法取得当前星期几;charAt(index)返回索引值为index的字符;2. var week = (new Date).getDay();var today = "";if(week == 0){today = "今天是原创 2012-09-21 10:53:57 · 1098 阅读 · 0 评论 -
程序自动触发锚标签的点击事件(热门应用)
基于jQuery改写了一下href属性 var comment = document.getElementsByTagName('a')[0]; $(comment).attr('href','http://www.baidu.com'); if (document.all) { // for ie comment.click();原创 2012-09-24 09:25:33 · 531 阅读 · 0 评论 -
模拟placeholder效果
$(document).ready(function(){ var doc = document, inputs = doc.getElementsByTagName('input'), supportPlaceholder = 'placeholder' in doc.createElement('in原创 2012-10-25 11:28:25 · 870 阅读 · 0 评论 -
JS操作iframe
1. 获得iframe的window对象2. 获得iframe的document对象3. iframe中获得父页面的window对象4. 获得iframe在父页面中的html标签5. iframe的onload事件6. frames参考文章1. 获得iframe的window对象存在跨域访问限制。chrome:iframeElement. contentWindow firef转载 2012-11-05 12:13:43 · 618 阅读 · 0 评论 -
加载javascript,并且在javascript加载完成时执行回调函数
function loadScript(objectId,url,callback){ var script = document.createElement("script"); script.type="text/javasctipt"; //只有IE有readyState if(script.readyState) { sc原创 2012-11-09 10:57:02 · 544 阅读 · 0 评论 -
读取url地址栏中传递的值
function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); r原创 2012-11-09 10:55:45 · 562 阅读 · 0 评论 -
倒计时
var remainTime = Date.parse('2016/01/01'); var minites = 1000 * 60; var hours = minites * 60; var days = hours * 24; setInterval(function () { var nowGetTime = new Date().getT原创 2015-03-08 16:47:15 · 630 阅读 · 0 评论