thiamat
Posts: 14
|
Posted: 11/29/2008, 11:10 AM |
|
So I am writing this post to urge the CCS team to stop implementing external JS package and instead think about a way to let application devellopers import and include their own using a common behavior interface!
The goal is the separate js source code from html template structure.
Why ?
- js source files cans be stored in cache while html/xhtml should not
- I am fed up with this event binding stucture of your own that polutes my generate code!
Here is a profesionnal solution !
// JavaScript Document
// define init trigger
GSM_init_add( "GSM_behavior_initialize()");
//////////////////////////////
//
var GSM_behavior_elements = new Array();
function GSM_behavior_initialize() {
var behavior_tags = [ "div", "img", "textarea", "input" ];
var current;
// alert( "GSM_behavior_initialize()");
// browse behavior tags
var lenght_tags = behavior_tags.length;
for(var i=0; i<lenght_tags; i++) {
// load elements
var elements = document.getElementsByTagName( behavior_tags);
var elements_BH = new Array();
// browse document element list
var length = elements.length;
for(var j=0; j<length; j++){
current = elements[j];
try {
// alert( "GSM_behavior_initialize : " + current.id);
// extract element behavior
behavior = current.getAttribute( "behavior");
// alert( "GSM_behavior_initialize : " + current.id + " => " + current.getAttribute( "behavior"));
if( behavior != null) {
// ensure element id
if( current.id=="") current.id = "bhid_" + ((i*j)+1);
// execute element behavior
elements_BH.push( new GSMBH_element( current.id, behavior));
}
} catch( e) {
alert( "GSM_behavior error : " + current.id);
}
}
// browse behavior element list
var length = elements_BH.length;
for(var j=0; j<length; j++){
current = elements_BH[j];
// alert( "GSM_behavior_initialize : " + current.element_id);
// execute element behavior
current.setup();
}
}
}
//////////////////////////////
//
function GSMBH_element( element_id, behavior) {
this.element_id = element_id
this.behavior = behavior;
//////////////////////////////
//
this.setup = function() {
var element = document.getElementById( this.element_id);
var behavior_hander = this.behavior;
var cmd = behavior_hander + "( element);"
// execute element behavior
// alert( "GSM_behavior_setup( " + behavior_hander + ", " + element.name + ");");
try {
// alert( "CMD : "+cmd);
eval( cmd);
} catch ( e) {
// alert( "Behavior handler not found : [ " + behavior_hander + " ]");
}
}
}
//////////////////////////////
//
function GSM_behavior_get_elements( behavior, tag, elem){
var behavior_test = new RegExp("(^|\\s)" + behavior + "(\\s|$)");
var tag = tag || "*";
var elem = elem || document;
var elements = (tag == "*" && elem.all)? elem.all : elem.getElementsByTagName( tag);
//
var elements_result = [];
var current;
var length = elements.length;
for(var i=0; i<length; i++){
current = elements;
if( behavior_test.test( current.behavior)){
returnElements.push(current);
}
}
return elements_result;
}
If any one from the CCS team interested I am there for you guys
just one more think : enhance your memory management I have more thant 500 pages and 4 go of ram! guest what it takes 5 min to create a directory!
_________________
No Code No Pain !
Just think |