Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

IE : position fixed (prototype.js inside)

4 réponses
Avatar
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

4 réponses

Avatar
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/

--
Jérémie
Avatar
nico.xiaoxia
On 4 sep, 11:54, jeremie fouche wrote:
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 ...
Avatar
SAM
a écrit :
On 4 sep, 11:54, jeremie fouche wrote:
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
Avatar
jeremie fouche
SAM a écrit :
a écrit :
On 4 sep, 11:54, jeremie fouche wrote:
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