jQuery.extend和jQuery.fn.extend的区别-转

jQuery.extend和jQuery.fn.extend的区别,其实从这两个办法本身也就可以看出来。很多地方说的也不详细。这里详细说说之间的区别.

1. 我们先把jQuery看成了一个类,这样好理解一些。

jQuery.extend(),是扩展的jQuery这个类。

假设我们把jQuery这个类看成是人类,能吃饭能喝水能跑能跳,现在我们用jQuery.extend这个方法给这个类拓展一个能唱歌的技能。这样的话,不论是男人,女人,xx人.....等能继承这个技能(方法)了。

可以如下图这样写着:

jquery-1

Continue reading

JQuery中的ready和js中onload加载优先级问题

JQuery中的$(function(){})和js中onload,谁先加载?

在$(document).ready()执行时,整个DOM文档树已经解析完成,即各个DOM元素都已经可以访问了(但是对于某些元素的某些属性此时访问可能还不精确,如图片的宽度高度)。$(function(){})在根据需要放置位置,可能在ready之前,可以在其之后。
onload需要页面上所有的资源都加载上之后执行,而ready则是DOM文档树已经解析完成时,说ready比onload快最显著的是比如一个页面上有一个很大的图片,加载要好久,onload只有在图片加载完成之后执行,而ready不必等图片加载完成.
而且一些人所说的向document添加load事件 是完全不可能的。
document准备之前是添加不进onload的,而且在document准备之后加onload是不会执行的。所以,document的onload只在html中声明有<body >时才有用,动态加进去的一般是没用的。
因此要想实现页面加载时的loading效果,一般是在<body>节点里面第一个位置添加div覆盖窗口,然后在</body>或者onload里面把覆盖层移除。
ext的sample就是这么做的,而且把<script type="text/javascript" src="../adapter/ext/ext-base.js"></script>之类的放入body里面也能计算出js文件的加载时间。
$(document).ready()在通常的情况下是限于onload加载的,他是基于DOM形成后就加载相关的应用的,而onload是待整个文档或者说页面加载完成后才会触发的,大家可以做个非常简单的实验,给一个页面加载一张大图片,然后限制下你的网络带宽,页面运用这两种写法alert一个提示。结果就很明显了.
$(document).ready();和$(function(){});是一样的。
$(document).ready()是DOM加载好后就执行,而onload要网页中的内容全部加载后才执行,比如说一个页面里有很多图片,onload就要等这些图片都加载好后才执行。另外一个页面中如果有两个onload只会执行一个,而$(document).ready();可以执行多个.

 

javascript类实例

<script type="text/javascript">
//定义Animal类
function Animal(){}
//修改类Animal的原型
Animal.prototype={
name : "XXX",
type : "animal",
say : function(){
alert("| say some");
}
}
//实例化类Animal
var dog = new Animal();
dog.say();
alert(dog.name);
</script>

对于类Animal原型也可以用下面这种写法:

Animal.prototype.name = "XXX";
Animal.prototype.type = "animal";
Animal.prototype.say = function(){
alert(this.type+" ,my name is " + this.name);
};

这里类的属性和方法全为公有属性,下面几行为么有属性和方法:

//公有属性
this.type = 'animal';
//私有属性
var age = 20;
//私有方法
var move = function(){
alert("I am a private method!");
}

function HMap(){this.name = "XXX";this.type = "animal";this.say = function(){alert("| say some");};}

var myMap = new HMap();alert(myMap.type);

 

IE下onpropertychange与firefox下oninput用法

onpropertychange能够捕获每次输入值的变化。例如:<INPUT id="test" name="test" />对象的value值被改变时,onpropertychange能够捕获每次改变,而onchange需要执行某个事件才可以捕获。
onpropertychange 不被firefox所支持,如果想在firefox下正常使用,需要用oninput属性,且需要用addEventListener来注册事件。 Continue reading

js中prototype用法

prototype 是在 IE 4 及其以后版本引入的一个针对于某一类的对象的方法,而且特殊的地方便在于:它是一个给类的对象添加方法的方法!这一点可能听起来会有点乱,别急,下面我便通过实例对这一特殊的方法作已下讲解:

首先,我们要先了解一下类的概念,JavaScript 本身是一种面向对象的语言,它所涉及的元素根据其属性的不同都依附于某一个特定的类。我们所常见的类包括:数组变量(Array)、逻辑变量 (Boolean)、日期变量(Date)、结构变量(Function)、数值变量(Number)、对象变量(Object)、字符串变量 (String) 等,而相关的类的方法,也是程序员经常用到的(在这里要区分一下类的注意和属性发方法),例如数组的push方法、日期的get系列方法、字符串的 split方法等等,

但是在实际的编程过程中不知道有没有感觉到现有方法的不足?prototype 方法应运而生!下面,将通过实例由浅入深讲解 prototype 的具体使用方法:
Continue reading

js跨域问题小结

点击下载示例:js_diff_domain.rar

本文来自:http://f2e.me/200904/cross-scripting/

javascript出于安全方面的考虑,是不允许跨域调用其他页面的对象的。但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦。没有记错的话前三届D2论坛上每次都有人提这个东西,这里把涉及到跨域的一些问题简单地整理一下:

首先什么是跨域,简单地理解就是因为javascript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象。更详细的说明可以看下表:

URL 说明 是否允许通信
http://www.kuqin.com/lab/a.js
http://www.kuqin.com/script/b.js
同一域名下不同文件夹 允许
http://www.kuqin.com/a.js
http://www.kuqin.com/b.js
同一域名下 允许
http://www.kuqin.com:8000/a.js
http://www.kuqin.com/b.js
同一域名,不同端口 不允许
http://www.kuqin.com/a.js
https://www.kuqin.com/b.js
同一域名,不同协议 不允许
http://www.kuqin.com/a.js
http://70.32.92.74/b.js
域名和域名对应ip 不允许
http://www.kuqin.com/a.js
http://script.kuqin.com/b.js
主域相同,子域不同 不允许
http://www.ithao123.com/a.js
http://www.kuqin.com/b.js
不同域名 不允许

特别注意两点:

第一,如果是协议和端口造成的跨域问题“前台”是无能为力的, Continue reading

Javascript跨域和Ajax跨域解决方案

jax跨域和JS的跨域通信(Cross The Site)的几种解决方案

最近做的一个项目中需要ajax跨域取得数据,如果是在本域中确实没有问题,但是放到二级域和其他域下浏览器直接就弹出提示框:“该页正在访问其控制范围之外的数据,这有些危险,是否继续"

1.什么引起了ajax跨域不能的问题
ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作,所以会警告。

2.有什么完美的解决方案么?
没有。解决方案有不少,但是只能是根据自己的实际情况来选择。

具体情况有:
一、本域和子域的相互访问: www.aa.com和book.aa.com
二、本域和其他域的相互访问: www.aa.com和www.bb.com 用 iframe
三、本域和其他域的相互访问: www.aa.com和www.bb.com 用 XMLHttpRequest访问代理
四、本域和其他域的相互访问: www.aa.com和www.bb.com 用 JS创建动态脚本
Continue reading

广告和统计的js文件异步加载、动态加载css文件代码

用法:include_js(src,[reload]);
src: js文件的路径名
reload:可选参数,0或1,表示是否重复加载同一个url的js文件。

用途:
本 函数可以用于一些广告和统计的js文件异步加载,避免了因加载js文件而造成的网页显示速度慢的问题。

将此函数修改如下后 可以动 态加载css文件 Continue reading