Prototype 프레임워크 학습
8881 단어 prototype
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]();
});
});
});
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기능 재검토(프로토타입 아님) 🤥빠른 수정을 위한 몇 가지 참고 사항 사용자 지정 속성이 있는 함수 이것은 대부분의 경우 런타임 바인딩이므로 someKey는 aFunction 또는 aFunction.prototype의 속성이 아닙니다. 접두사 cu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.