javascript事件系统的发展史
一个完整的事件系统,通常存在以下三个角色:
事件对象,用于储存事件的状态。
事件源对象,当前事件在操作的对象,如元素节点,文档对象,window对象,XMLHttpRequest对象等。
事件监听器,当一个事件源生成一个事件对象时,它会调用相应的回调函数进行操作。在IE中,事件对象恒为全局属性window.event的分身。
在w3c没有把其DOM 模型引入网页时,netscape与微软已经逼不及待到快他们熟悉的语言中把相关的DOM模型搞进来了。这其实也怪javascript之父忙于把抄袭其他语言,忽略了自身事件系统的建设。从此世界被划分为两大阵营了。
DOM0时代,这里的DOM指w3c的DOM。双方都设计两种绑定事件的方法,无侵入式与侵入式。你可以说内联式与非内联式的区别。
侵入式,双方都一样。没有办法,那是很早就实现的。那时IE只有抄袭的份,还不敢胡来。
<input name="ruby" onclick="alert(this.nam)" />
然后是无侵入式,这估计是它们都完成了各自的DOM模型,实现对元素节点的索引机制之后的事了。比如有以下网页片断:
<input
type="button"
name="button1"
value="aaaa"/>
我们必须自上而下,一步步找到此元素节点才能操作它。注意,那时没有所谓的document.getElementById。网景的做法,把相关绑定的代码放进一个script标签中:
<form name="form1">
<input
type="button"
name="button1"
value="aaaa"/>
</form>
如果你不想把代码用window.onload = function(){}这代码块括起来,那么你得把这script标签放于表单元素之后。
微软也有一套索引机制,基本与网景的一样,但IE4还引入了document.all与document.all.tags。不过IE还有另一套方式:
<script
for="button1"
event="onclick"
language="JavaScript">
alert("this.aaa")
</script>
不过,它用不了this(或者能,我不会),另要求一个script标签对应body中的一个标签,实在很浪费,最终被淘汰出局了。
这就是DOM0的绑定机制,另以内联方式写在标签中的代码,其实相当于以下方式:
<p id="aa" onclick="alert('aaaa')">相当于↓</p>
<script type="text/javascript">
var p = document.getElementById("aa")
p.onclick = new Function("alert('aaaa')")//相当于↓
相关文档:
注:页面上元素name属性和JavaScript引用的名称必须一致包括大小写
否则会提示你一个错误信息 "引用的元素为空或者不是对象"
---------------------------------------------------------------------
对象属性
document.title ......
当需要在网页中显示时间时可以用到下面这段代码:
<SCRIPT language=JavaScript type=text/JavaScript>
var day="";
var month="";
var ampm="";
var ampmhour="";
var myweekday="";
var year="";
mydate=new Date();
myweekday=mydate.getDay();
mymonth=mydate.getMonth()+1;
myday= mydate.getDate(); ......
制作Javascript弹出窗口技巧九则
1、最基本的弹出窗口代码
其实代码非常简单:
< SCRIPT LANGUAGE="javascript">
< !--
window.open ("page.html")
--
>
< /SCRIPT>
因为这是一段Javascript代码,所以它们应该放在< SCRIPT LANGUAGE="javascript">之间。 ......
javascript集锦
javascript数组操作汇总
javascript动态创建form表单 和 节点控制说明
动态读取
javascript:function ctys(_ctag){
ctys1=document.createElement(_ctag);
document.body.appendChild(ctys1);
return ctys1
};
newE1=ctys('<TEXTAREA id=www>');
newE1.cols='150';
newE1.rows='30 ......