summaryrefslogtreecommitdiff
path: root/misc
diff options
context:
space:
mode:
authorGábor Hojtsy <gabor@hojtsy.hu>2008-01-30 10:17:39 +0000
committerGábor Hojtsy <gabor@hojtsy.hu>2008-01-30 10:17:39 +0000
commitef043ca5bb8ec6954171d1b8026e32fb172cb49a (patch)
tree338434ac4b58bfe15686e2aa324655ef0c828942 /misc
parentef1235cc0a97305216d8987e3bd8459d30cbe5df (diff)
downloadbrdo-ef043ca5bb8ec6954171d1b8026e32fb172cb49a.tar.gz
brdo-ef043ca5bb8ec6954171d1b8026e32fb172cb49a.tar.bz2
#214329 by starbow: avoid attaching scroll behavior multiple times
Diffstat (limited to 'misc')
-rw-r--r--misc/tableheader.js26
1 files changed, 19 insertions, 7 deletions
diff --git a/misc/tableheader.js b/misc/tableheader.js
index a93914c25..0f0e7de12 100644
--- a/misc/tableheader.js
+++ b/misc/tableheader.js
@@ -1,8 +1,14 @@
// $Id$
+Drupal.tableHeaderDoScroll = function() {
+ if (typeof(Drupal.tableHeaderOnScroll)=='function') {
+ Drupal.tableHeaderOnScroll();
+ }
+};
+
Drupal.behaviors.tableHeader = function (context) {
// This breaks in anything less than IE 7. Prevent it from running.
- if (jQuery.browser.msie && parseInt(jQuery.browser.version) < 7) {
+ if (jQuery.browser.msie && parseInt(jQuery.browser.version, 10) < 7) {
return;
}
@@ -16,7 +22,7 @@ Drupal.behaviors.tableHeader = function (context) {
top: '0px'
});
- var headerClone = $(headerClone)[0];
+ headerClone = $(headerClone)[0];
headers.push(headerClone);
// Store parent table.
@@ -44,7 +50,7 @@ Drupal.behaviors.tableHeader = function (context) {
var cellWidth = parentCell.eq(index).css('width');
// Exception for IE7.
if (cellWidth == 'auto') {
- var cellWidth = parentCell.get(index).clientWidth +'px';
+ cellWidth = parentCell.get(index).clientWidth +'px';
}
$(this).css('width', cellWidth);
});
@@ -56,16 +62,22 @@ Drupal.behaviors.tableHeader = function (context) {
var vOffset = (document.documentElement.scrollTop || document.body.scrollTop) - e.vPosition;
var visState = (vOffset > 0 && vOffset < e.vLength) ? 'visible' : 'hidden';
$(e).css({left: -hScroll + e.hPosition +'px', visibility: visState});
- };
+ }
+
+ // Only attach to scrollbars once, even if Drupal.attachBehaviors is called
+ // multiple times.
+ if (!$('body').hasClass('tableHeader-processed')) {
+ $('body').addClass('tableHeader-processed');
+ $(window).scroll(Drupal.tableHeaderDoScroll);
+ $(document.documentElement).scroll(Drupal.tableHeaderDoScroll);
+ }
// Track scrolling.
- var scroll = function() {
+ Drupal.tableHeaderOnScroll = function() {
$(headers).each(function () {
tracker(this);
});
};
- $(window).scroll(scroll);
- $(document.documentElement).scroll(scroll);
// Track resizing.
var time = null;