IE : position fixed (prototype.js inside)

Le
jeremie fouche
Bonsoir a tous

Je suis en train de faire un script qui permet de faire en sorte que
l'entete d'une table (balise <thead>) soit fixe. C'est utile lorsqu'on a
un tableau contenant beaucoup de données.

Mon script fonctionne correctement sous FF, mais je patine sous IE
(visible ici : http://pagesperso-orange.fr/jeremie.fouche/th/


Mon principal problème est d'adapté les hack pour faire le
position:fixed. En effet, les scripts que j'ai trouvé se basent sur le
fait qu'on puisse effectuer une expression dans le CSS :
ex :
left: expression( (15 + ( ignoreMe2 =
document.documentElement.scrollLeft ?
document.documentElement.scrollLeft : document.body.scrollLeft ) ) );

Comme on peut remarquer, la position est défini en dur dans le CSS, et
n'est pas calculée dynamiquement en fonction de la position de la table
dans la page. Mes essais n'ont pas été tres concluant pour faire qqchose
de dynamique.

Avez vous une idée afin de pouvoir positionner un élément en position
fixe en javascript sur IE. C'est forcement possible car IE7.js le
fait mais je n'ai pas compris comment en regardant les sources.


8< --

var TableHeader = {

/**
* Compute fixing the <thead> of a the given table on the page
*/
Fixed : function(table)
{
table = $(table);

var headers = table.getElementsBySelector('thead');

// This script is only available for 1 row header.
if ((headers.size() != 1) || (headers[0].rows.length != 1))
return;

var header = headers[0];
var headerPos = Position.cumulativeOffset(header);

// Get the cols
var cols = $A(header.rows[0].cells);
var colSize = cols.collect(function(e) { return $(e).getWidth(); });

// Put the header outside the table
var tableHeader = Element.extend(document.createElement('table'));
tableHeader.addClassName('jth_header');
new Insertion.Top(tableHeader, header);
new Insertion.Before(table, tableHeader);

// Create a space to insert the header
var divSpace = Element.extend(document.createElement('div'));
divSpace.setStyle({ height : header.getHeight() + 'px' });

new Insertion.Before(table, divSpace);

// Set the cols width
cols.each( function(e, i) { $(e).setStyle({width : colSize[i] +
'px' }); } );

// IE Hack
if (Prototype.Browser.IE)
{
tableHeader.setStyle({
left : "expression( (" + headerPos[0] + " + ( ignoreMe2 =
document.documentElement.scrollLeft ?
document.documentElement.scrollLeft : document.body.scrollLeft ) ) +
'px' );",
top : "expression( (" + headerPos[1] + " + ( ignoreMe =
document.documentElement.scrollTop ? document.documentElement.scrollTop
: document.body.scrollTop ) ) + 'px' );"
});
}
}
};

// On l'appel comme ca :
new TableHeader.Fixed('id_table');

--
Jérémie
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
jeremie fouche
Le #16714951
jeremie fouche a écrit :
Bonsoir a tous

Je suis en train de faire un script qui permet de faire en sorte que
l'entete d'une table (balise <thead>) soit fixe. C'est utile lorsqu'on a
un tableau contenant beaucoup de données.



J'ai fini par trouver, pour ceux que ca interresse :
http://pagesperso-orange.fr/jeremie.fouche/th/

--
Jérémie
nico.xiaoxia
Le #17249881
On 4 sep, 11:54, jeremie fouche
jeremie fouche a écrit :

> Bonsoir a tous

> Je suis en train de faire un script qui permet de faire en sorte que
> l'entete d'une table (balise <thead>) soit fixe. C'est utile lorsqu'on a
>  un tableau contenant beaucoup de données.

J'ai fini par trouver, pour ceux que ca interresse :http://pagesperso-ora nge.fr/jeremie.fouche/th/

--
Jérémie



Ca m'intéresse ...
SAM
Le #17250541
a écrit :
On 4 sep, 11:54, jeremie fouche
jeremie fouche a écrit :

Bonsoir a tous
Je suis en train de faire un script qui permet de faire en sorte que
l'entete d'une table (balise <thead>) soit fixe. C'est utile lorsqu'on a
un tableau contenant beaucoup de données.


J'ai fini par trouver, pour ceux que ca interresse :http://pagesperso-orange.fr/jeremie.fouche/th/



Ca m'intéresse ...



Ça ne fonctionne pas dans mon standalone IE6 pour Mac
Ni dans le IE de mon émulateur Windows XP sp2
(erreur ligne 45 : cet objet ne gère pas cette méthode)
(... avec ça on sait tout ! :-( )

--
sm
jeremie fouche
Le #17379891
SAM a écrit :
a écrit :
On 4 sep, 11:54, jeremie fouche
jeremie fouche a écrit :

Bonsoir a tous
Je suis en train de faire un script qui permet de faire en sorte que
l'entete d'une table (balise <thead>) soit fixe. C'est utile
lorsqu'on a
un tableau contenant beaucoup de données.


J'ai fini par trouver, pour ceux que ca interresse
:http://pagesperso-orange.fr/jeremie.fouche/th/



Ca m'intéresse ...



Ça ne fonctionne pas dans mon standalone IE6 pour Mac
Ni dans le IE de mon émulateur Windows XP sp2
(erreur ligne 45 : cet objet ne gère pas cette méthode)
(... avec ça on sait tout ! :-( )




Mince, j'avais bien rencontré des pb IE6/IE7, mais sur mon WinXP, ca
marche sur ceux precedement sité + FF3.
Je vais mettre en ligne la version demain, je n'ai pas ca sous la main...
--
Jérémie
Publicité
Poster une réponse
Anonyme