By: 泣红亭
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>给对象增加一个简单的自定义事件机制</title>
</head>
<body>
<script type="text/javascript">
function MyObject()
{
// 保存事件监听函数数组
this.RunEventListeners = new Array();
}
MyObject.prototype.Run = function()
{
// 在这里实现Run方法的代码并且触发
// 下边是激活onrun事件
for(var i = 0; i < this.RunEventListeners.length; i++)
this.RunEventListeners[i](this);
}
MyObject.prototype.AddEvent = function(name, listener)
{
switch(name.toLowerCase())
{
case "onrun":
this.RunEventListeners[this.RunEventListeners.length] = listener;
break;
// 还可以在这里增加各种事件,最好判断一下该listener是事已经被添加,以免重复执行,不过这里省了
default:
break;
}
}
function OnRun1(sender)
{
alert("已经执行了OnRun1事件")
}
function OnRun2(sender)
{
alert("已经执行了OnRun2事件");
}
var myobj = new MyObject();
// 添加两个监听函数
myobj.AddEvent("onrun", OnRun1);
myobj.AddEvent("onrun", OnRun2);
// 执行Run方法,如无例外,会触发onrun事件
myobj.Run();
</script>
</body>
</html>
By: 月影
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>给对象增加一个简单的自定义事件机制</title>
</head>
<body>
<script type="text/javascript">
Function.prototype.DECLEAR_EVENT = function(evt_type)
{
var args = arguments;
var method = this;
var type = evt_type;
return function()
{
method.apply(this, args);
for(each in this.EventListeners[type])
this.EventListeners[type][each](this);
}
}
function MyObject()
{
// 保存事件监听函数数组
this.EventListeners = new Array();
}
MyObject.prototype.Run = function()
{
// 在这里实现Run方法的代码
}.DECLEAR_EVENT("onrun"); //onrun事件声明
MyObject.prototype.AddEvent = function(name, listener)
{
this.EventListeners[name]?
this.EventListeners[name].push(listener):this.EventListeners[name]=[listener];
}
function OnRun1(sender)
{
alert("已经执行了OnRun1事件")
}
function OnRun2(sender)
{
alert("已经执行了OnRun2事件");
}
var myobj = new MyObject();
// 添加两个监听函数
myobj.AddEvent("onrun", OnRun1);
myobj.AddEvent("onrun", OnRun2);
// 执行Run方法,如无例外,会触发onrun事件
myobj.Run();
</script>
</body>
</html>
By: DSONet
<SCRIPT LANGUAGE="JavaScript">
<!--
function EventTarget(){
this._listeners={};
this.addEventListener=function(sType,fnHandle){
if ('function'!=typeof fnHandle){return;}
var ls=this._listeners[sType];
if(!ls)ls=this._listeners[sType]={};
ls[EventTarget.toHashCode(fnHandle)]=fnHandle;
};
this.dispatchEvent=function(sType){
if(!this._listeners[sType])return;
for(var hc in this._listeners[sType]){
this._listeners[sType][hc].call(this);
}
};
}
EventTarget.toHashCode=function(o){if(o._hashCode)return o._hashCode;return o._hashCode="_"+(EventTarget._hashCodeCounter++).toString(32);};
EventTarget._hashCodeCounter=0;
function TestEvent(){
EventTarget.call(this);
this.test=function(){
alert('test方法开始执行');
this.dispatchEvent('onTest');
alert('test方法执行完毕');
};
};
var test=new TestEvent();
test.addEventListener('onTest',function(){alert('监听到test事件');});
test.test();
var test2=new TestEvent();
test2.test();
//-->
</SCRIPT>
p onclick=javascript:alert(document.body.offsetWidth);alert(document.body.offsetHeight);点击/p p onclick=javascrip
以前写 JavaScript 程序时,事件都是采用 object.event = handler; 的方式初始化。这种方式对于 Internet Explorer、Mozil
假设: iframe name=picUploadFrame src=picUpload.php frameborder=0 scrolling=no width=100% height=30/iframe 在IE中
群里一个朋友提供的,如果你想通过Ajax采集别站信息,只有IE才允许,并且会给你一个提示。为了安全考虑,Firefox不提供跨
CSSER整理,打字真累
用过div+css作个整个网站,如果是纯粹的div的布局是比较麻烦的,尤其是你div里面嵌套div的,div布局的时候,你有些页面效
子乌注:一篇相当不错的function入门文章,个人感觉相当经典。 词语翻译列表 function:函数(Function未翻译) declare:定
从 So the Necessary May Speak 一文延伸阅读,找到了包括 Luke W 、 Andrey Smagin 、Deva Prasad 多人的再设计,转贴图