关于使用Event:selector的一个问题!!寻求更好的解决途径!!
各位大虾!日前跟着潮流学习了ajax,提到框架,我首先选择了轻量级的prototype.prototype的作者根据behaviour框架的灵感,在prototype1.5中引入了(css)Event:selector,我觉得如果这个框架完美的话,倒是对web制作中实现行为与结构的分离带来了极大的便利。
关于Event:selectors的具体说明,我只给出网址,是英文的,中文的这方面内容太少了。
http://encytemedia.com/event-selectors/
好了,我现在开始提起我遇到的问题了。
首先我要实现的是这么一种效果:我在html文件中定义纯粹的元素标签,在css文件中定义样式,在
style.js文件中, 把css样式中的各种选择符,按照 类别 给予 事件的绑定,我做的测试是关于
loaded,具体地说:我想在button按钮发生加载事件的时候,给button添加上样式同时绑定事件。
但问题出现了。
我的测试共三个文件:
buttonStyle.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Button Style</title>
<style type="text/css">
@import url(style.css);
</style>
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="event-selectors.js"></script>
</head>
<body>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr height="30">
<td id="contain">
<input name="" type="button" disabled="disabled" class="ButtonType" accesskey="A" value="添加" icon="images/button_ok.gif"/></td>
</tr>
</table>
</body>
</html>
<script type="text/javascript" src="style.js"></script>
style.js
var Rules = { '.ButtonType :loaded': function(element,event) {
var input=element;
var span=document.createElement("span");
span.style.backgroundColor="lightblue";
span.innerHTML=element.value;
span.onclick=function(){alert("hello");};
$(input).parentNode.replaceChild(span,$(input));
}
};
EventSelectors.start(Rules);
style.css
.ButtonType{
}
到这里的话,一切都还顺利,运行起来的话。ie和firefox都通过。但是我如果在html文件中 button 下面再添加一个 button 取value属性为"删除"(取什么都可以了!),保存,运行:
ie下出现错误,错误内容:parentNode对象为空或不是对象
fireFox下的javascript控制台的错误内容是:.parentNode has no properties
如果我在html页中再复制一个按钮的话,也会出现同样的错误。
另外,不知道大家注意到了没有,对于html文件中的包含文件,有一个我把它放在最下面:
<script type="text/javascript" src="style.js"></script>
如果放在head位置中 ,则全然没有效果,我觉得这换个很不协调,独独要把这个文件放在底部,其他的放在首部,对结构上我觉得是一种缺陷。我基本是严格按照 官方网站提供的资料(虽然少得可怜)
以及格式做的试验,但这个错误却让我不解。
如果有哪位高手,理解这个框架的话,可以帮我解决一下问题,(一定要和loaded事件有关的哦)!
另外,框架这个东西,其实把整个的框架文件.js包含进来,无异于对加载文档的速度有影响,如果javascript本身 能够实现 监听任意元素 的加载就好了,
据我查阅的文档 表明 好像 load事件只是由 window,image,frame等 对象fire出的。
那么请问高手,我们是否可以扩展Event事件,定制自己的load事件呢(比如我给button按钮设置一个load监听,或者给一个<a>也设置一个监听,这一点微软的htc就做到了,只可惜只能用再ie,不然它应该是最棒的)?????
期盼高手回复
,,,,,,我想这个问题对很多ajaxian来说也是很有意义的。
问题点数:20、回复次数:0Top




