From f49b5e7c315a037d1c3cca249cacb6564f13f57b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bar=C4=B1=C5=9F=20Metin?= Date: Thu, 9 Apr 2009 10:54:33 +0000 Subject: [PATCH] linetab sliding animation makes the browser crawl. this patch eases the cpu usage by caching elements and delaying initialization. --- plekit/linetabs/linetabs.js | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/plekit/linetabs/linetabs.js b/plekit/linetabs/linetabs.js index 834d756..f14021d 100644 --- a/plekit/linetabs/linetabs.js +++ b/plekit/linetabs/linetabs.js @@ -24,6 +24,7 @@ function linetabs () { this.c = 0; this.d = 20; this.animInterval = null; + this.elem_div_linetabs = null; this.slideObj = null; this.aHeight = 0; } @@ -163,16 +164,29 @@ linetabs.prototype.submit = function (message) { // globals var linetabs_namespace = { init: function () { - $$('div.linetabs').each (function (div) { + // just give it a little time to load everything. + setTimeout('linetabs_namespace.lazyInit()', 1000); + }, + + lazyInit: function() { + linetabs_namespace.elem_div_linetabs = $$('div.linetabs'); + + Event.observe('linetabs', + 'mouseover', + function() { + linetabs_namespace.elem_div_linetabs = $$('div.linetabs'); + }); + + linetabs_namespace.elem_div_linetabs.each (function (div) { /* create instance and attach it to the
element */ div.linetabs = new linetabs (); div.linetabs.init(div); } ) ; var intervalMethod = function () { - $$('div.linetabs').each (function (div) { - linetabs_namespace.the_linetabs(div).slideIt(); - } ) ; + linetabs_namespace.elem_div_linetabs.each (function (div) { + linetabs_namespace.the_linetabs(div).slideIt(); + } ) ; } ; linetabs_namespace.animInterval = setInterval(intervalMethod,10); }, @@ -180,6 +194,7 @@ var linetabs_namespace = { cleanUp: function() { clearInterval(linetabs_namespace.animInterval); linetabs_namespace.animInterval = null; + linetabs_namespace.elem_div_linetabs = null; }, resize: function (e) { @@ -203,6 +218,6 @@ var linetabs_namespace = { }; -Event.observe(window, 'load',linetabs_namespace.init); +Event.observe(window, 'load', linetabs_namespace.init); Event.observe(window, 'unload', linetabs_namespace.cleanUp); Event.observe(window, 'resize', linetabs_namespace.resize); -- 2.47.0