document.observe("dom:loaded", function() {
Object.extend(String.prototype , {
bLength : function () {
if (!this.toString()) {
return 0;
}
var b = this.toString().match(/[^\x00-\xff]/g);
return this.toString().length + (b ? b.length : 0);
} ,
leftB : function(lens){
var s = this.toString().replace(/\*/g, ' ').replace(/[^\x00-\xff]/g, '**');
var str = this.toString().slice(0, s.slice(0, lens).replace(/\*\*/g, ' ').replace(/\*/g, '').length);
if (str.bLength() > lens && lens > 0) {
str = str.slice(0, str.length - 1);
}
return str;
}
});
var ajaxUrl = {
common : {
listurl : '/home/game/ajaxGameListbycatNew',
rankurl : '/home/game/ajaxCatRankNew',
newrankurl : '/home/game/ajaxCatRankUninstall'
},
mobile : {
listurl : '/mobile/Main/ajaxMobileListNew',
rankurl : '/mobile/Main/ajaxMobileRankNew'
}
};
var Tpl = {
listTpl : '<li><a href="#{appUrl}" class="ksimg_href"><img width="78" height="78" alt="#{appName}" title="#{appName}" class="ks_img" src="#{appLogo}"></a><span class="xxspan ks_title"><a href="#{appUrl}">#{appShortName}</a></span><span class="xxspan ks_score starbar"><a href="javascript:void(0)"><span data-now="#{appRate}"></span></a></span><span class="xxspan scorefs">#{appRate}分</span><span class="xxspan ks_number">#{totalUser}人</span></li>',
mobileListTpl : '<li class="anap_li"><a title="#{fullName}" target="_blank" href="#{detailUrl}"><img width="60" height="60" alt="#{name}" src="#{logo}" class="ks_img"></a><span class="mb_span ks_title"><a class="ks_title" title="#{fullName}" target="_blank" href="#{detailUrl}">#{shortName}</a></span><span class="mb_span ks_score">#{weekNum}次</span><span class="mb_span ks_number"><a target="_blank" class="ksdl" title="下载" href="#{downloadUrl}"></a></span></li>'
};
var Tab = Class.create({
initialize : function(dom) {
// common mobile
Element.extend(this.dom);
this.dom = dom;
this.mobile = dom.getAttribute('data-type');
this.type = this.mobile ? this.mobile : dom.id;
this.listurl = this.mobile ? ajaxUrl.mobile.listurl : ajaxUrl.common.listurl;
this.rankurl = this.mobile ? ajaxUrl.mobile.rankurl : ajaxUrl.common.rankurl;
this.pageSize = this.mobile ? 12 : 8;
this.page = 1;
},
getParams : function(type) {
if(type === 'list') {
return {
type : this.type,
page : this.page,
pageSize : this.pageSize
};
} else if(type === 'rank') {
return {
type : this.type
};
}
},
loadAll : function() {
this.page = 1;
this.loadList();
this.loadRank();
},
loadListSuccess : function(params , xmlHttp) {
var data = xmlHttp.responseText.evalJSON();
var succ = data.errorCode == 0 || data.error_code == 0;
if(succ) {
Element.extend(this.dom);
this.dom.store('page=' + params.page , data.data);
this.showGameList(params , data.data);
}
},
loadList : function() {
Element.extend(this.dom);
var params = this.getParams('list');
var data = this.dom.retrieve('page=' + params.page);
if(data) {
this.showGameList(params , data);
} else {
new Ajax.Request(this.listurl , {
method : 'get',
parameters : params,
onSuccess : this.loadListSuccess.bind(this , params)
});
}
},
showStar : function(list) {
nodes.scrollcontent.select('[data-now]').each(function(item) {
var pixel = parseFloat(item.getAttribute("data-now") || '5.0').round() * 14;
new Effect.Morph(item, {
style: 'width:' + pixel + 'px', // CSS Properties
duration: 0.5 // Core Effect properties
});
});
},
showGameList : function(params , data) {
var isMobile = this.mobile;
nodes.ks_nav.select('dd[id]').each(function(dom) {
dom.removeClassName('on');
});
this.dom.addClassName('on');
if(params.page == 1) {
nodes.goleft.addClassName('ks_leftnone');
} else {
nodes.goleft.removeClassName('ks_leftnone');
}
if(data.last) {
nodes.goright.addClassName('ks_rightnone');
} else {
nodes.goright.removeClassName('ks_rightnone');
}
if(!data.moreUrl) {
nodes.moreLink.hide();
} else {
nodes.moreLink.show().href = data.moreUrl;
}
var template = new Template(isMobile ? Tpl.mobileListTpl : Tpl.listTpl);
var htmlList = [];
htmlList.push('<ul>');
(data.data || data.list).each(function(item) {
if(!isMobile && !item.appShortName) {
var len = item.appName.bLength();
if(len > 8) {
item.appShortName = item.appName.leftB(8) + '...';
} else {
item.appShortName = item.appName;
}
}
if(isMobile && !item.shortName) {
var len = item.name.bLength();
if(len > 10) {
item.shortName = item.name.leftB(10);
} else {
item.shortName = item.name;
}
}
htmlList.push(template.evaluate(item));
});
htmlList.push('</ul>');
nodes.scrollcontent.update(htmlList.join(''));
nodes.scroll.hide();
new Effect.Appear(nodes.scroll , {
afterFinish : this.showStar.bind(this , data.list)
});
},
loadRank : function() {
},
goleft : function() {
var page = this.page;
if(page == 1) {
return;
}
this.page --;
this.loadList();
},
goright: function() {
var none = nodes.goright.hasClassName('ks_rightnone');
if(none) {
return;
}
this.page ++;
this.loadList();
}
});
Tab.getCurrentTab = function() {
return Tab.current;
};
var nodes = (function() {
var list = 'ks_nav,all,operate,tactics,rollplay,chess,puz,singlegame,m_android,m_apple,goleft,scroll,scrollcontent,goright,moreLink,ks_right,gameTile,gametTitleOff,gametTitleOn,ks_list';
var result = {};
list.split(',').each(function(nodeKey) {
if($(nodeKey)) {
result[nodeKey] = $(nodeKey);
Element.extend(result[nodeKey]);
}
});
return result;
})();
nodes.ks_nav.on('click' , function(e) {
var target = e.element();
if(target.id) {
Element.extend(target);
var tab = target.retrieve('tab');
if(!tab) {
tab = new Tab(target);
target.store('tab' , tab);
}
tab.loadAll();
Tab.current = tab;
}
});
var HoverClass = {
goleft : 'ks_lefthover',
goright: 'ks_righthover'
};
[nodes.goleft,nodes.goright].each(function(item) {
item.on('mouseover' , function(e) {
var target = e.element();
target.addClassName(HoverClass[target.id]);
});
item.on('mouseout' , function(e) {
var target = e.element();
target.removeClassName(HoverClass[target.id]);
});
item.on('click' , function(e) {
var target = e.element();
var tab = Tab.getCurrentTab();
tab[target.id]();
});
});
});
分享到:
相关推荐
Prototype框架是JavaScript编程中的一种流行库,主要用于简化DOM操作、事件处理、Ajax交互以及对象创建。这个框架由Sam Stephenson于2005年创建,是早期JavaScript开发者的常用工具,尤其是在构建动态Web应用程序时...
**jQuery和Prototype框架详解** jQuery和Prototype是两个非常流行的JavaScript库,它们极大地简化了JavaScript的DOM操作、事件处理和动画效果。在这个资源包中,您将找到关于这两个框架的API帮助文档,这对于学习和...
Prototype框架是JavaScript中一个强大的库,它为JavaScript开发提供了许多便利的功能,特别是在对象原型扩展、事件处理、Ajax交互等方面。本文将详细介绍Prototype框架中的几个常用方法,并通过实例进行解析。 1. *...
网上找的一些prototype.js学习资料
#### 六、Prototype框架的学习资源 - **官方文档**:最权威的学习资源,包含详细的API文档和示例代码。 - **在线教程**:网络上有很多关于Prototype的免费教程,适合初学者快速入门。 - **社区论坛**:参与...
Prototype框架详解 Prototype是一个强大的JavaScript库,由Sam Stephenson创建,它主要目的是为了简化Web应用程序的动态开发,尤其是Ajax交互。作为一个单文件分发的prototype.js,它在Web开发领域得到了广泛应用,...
这个“Prototype 1.6中文手册 chm+prototype 1.6.js源码 最新版”正是面向希望深入学习和掌握Prototype框架的开发者们的重要资源。 Prototype 1.6中文手册: 手册详细介绍了Prototype框架的1.6版本,这是一个非常...
在学习Prototype框架时,可以参考压缩包中的文件,例如查看示例代码,了解如何在实际项目中应用这些功能。同时,理解Prototype的源码也是提升JavaScript技能的好方法,因为它展示了如何优雅地扩展JavaScript语言。...
学习Prototype框架,不仅可以提高JavaScript编程效率,还能帮助开发者理解和掌握面向对象编程的概念,提升Web应用的开发能力。通过阅读`prototype学习`中的文件,你可以系统性地学习这个框架的各个方面,并在实践中...
综上所述,"Prototype 小程序"代表了一个利用Prototype框架进行Ajax开发的学习资源集合。通过理解和实践这些资料,开发者能够提升在JavaScript中的面向对象编程技能,熟练运用Ajax进行数据交互,并掌握如何构建更...
尽管 Prototype 1.5.0 是一个较旧的版本,但它仍然是学习 JavaScript 框架历史和基本概念的重要资源。随着技术的发展,后续版本的 Prototype 添加了更多功能,例如对 JSON 支持的增强以及对 jQuery 等其他库的兼容性...
在本讨论中,我们将深入探讨Prototype框架的1.6.0.3版本及其API。 Prototype的核心理念是增强JavaScript的基本对象,如Array、String、Function等,以提供更强大的功能。例如,它通过添加新的方法如`each`、`map`和...
### Prototype框架:深入理解与应用 #### 一、概述 **Prototype**是一个旨在简化动态Web应用程序开发的JavaScript框架。由Sam Stephenson创建,并于2005年2月作为开源项目发布。Prototype的核心团队成员包括Thomas...
这个“prototype从入门到精通”的教程涵盖了从基础概念到高级特性的全面学习路径,旨在帮助开发者快速掌握并精通Prototype框架。 一、Prototype基础知识 1. **对象扩展**:Prototype的核心特性之一就是对...
描述提到“一个比较好用的东西”,这表明 Prototype 框架在JavaScript开发中具有实用性,易于学习和使用。“里面有1.5和1.6各个版本,共四个!” 暗示我们有至少两个主要版本(1.5和1.6)的多个迭代或修订版,这可能...
1. **类与对象**:Prototype框架通过扩展JavaScript的原生对象,引入了类的概念。`Class.create()`方法允许开发者创建新的类,而`extend()`方法则用于继承现有类,实现面向对象编程。 2. **Ajax**:Prototype的核心...
Prototype框架自问世以来,便以其卓越的性能和简便的操作在JavaScript开发领域占据了重要的地位。它不仅简化了动态Web应用程序的开发流程,还提供了丰富的功能,使得面向对象的JavaScript编程变得更加直观和高效。...
Prototype.js作为一款轻量级的JavaScript框架,以其简洁的API和广泛的适用性,成为了众多开发者的选择。本文旨在通过实际案例,介绍Prototype.js的基础知识和应用技巧,特别是如何利用Prototype.js进行元素定位和DOM...
本案例将重点探讨如何利用Prototype框架来实现AJAX的功能。 AJAX,即Asynchronous JavaScript and XML,是一种创建动态网页的技术,允许在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。...
Prototype 是一个轻量级的JavaScript框架,它增强了JavaScript的基础功能,简化了DOM操作,并提供了丰富的Ajax工具。其核心理念是通过扩展JavaScript的基本类型和对象,提供更加面向对象的编程体验。 2. **DOM ...