par
momox » 04 avr. 2010, 12:56
Investigations toujours avec mon problème...
En fait, après recherches, il s'avére que c'est IE qui me cause des soucis...
Voici mon script:
function updateClock() {
var currentTime = new Date();
var systemTime = new Ajax.Request('./system_time.php', {onSuccess: function(response) {
currentTime.setTime(response);
}});
var days = {0: 'Dimanche', 1: 'Lundi', 2: 'Mardi', 3: 'Mercredi', 4: 'Jeudi', 5: 'Vendredi', 6: 'Samedi'};
var months = {0: 'Janvier', 1: 'Février', 2: 'Mars', 3: 'Avril', 4: 'Mai', 5: 'Juin', 6: 'Juillet', 7: 'Aout', 8:'Septembre', 9:'Octobre', 10: 'Novembre', 11: 'Décembre'};
var timeData = {'hour': (currentTime.getHours() < 10 ? '0' + currentTime.getHours() : currentTime.getHours()) + ':' + (currentTime.getMinutes() < 10 ? '0' + currentTime.getMinutes() : currentTime.getMinutes()), 'date': days[currentTime.getDay()] + ' ' + (currentTime.getDate() < 10 ? '0' + currentTime.getDate() : currentTime.getDate()) + ' ' + months[currentTime.getMonth()] + ' ' + currentTime.getFullYear()};
$('time').update(timeData.hour);
$('date').update(timeData.date);
}
function resizeDesktop() {
//resizing #desktop
//getting window total height
var windowHeight = window.innerHeight;
//getting other elements
var blockElements = $$('body > div[class~="block-element"]');
var totalHeight = 0;
blockElements.each(function(el){
alert(el.id + ':' + el.clientHeight);
totalHeight = parseInt(totalHeight) + parseInt(el.clientHeight);
});
var desktopHeight = windowHeight-totalHeight;
$('desktop').setStyle({height: desktopHeight + 'px'});
//resizing #appsbar div.apps-list width
var windowWidth = window.innerWidth;
var appsListElements = $$('div#appsbar div.apps-list');
}
//What to do on window loading ?
Event.observe(window, 'load', function() {
//syncronizing with server time
updateClock();
//we update clock every minute
new PeriodicalExecuter(updateClock, 60);
resizeDesktop();
});
//what to do on window resizing ?
Event.observe(window, 'resize', function() {
resizeDesktop();
});
Mon problème se situe au niveau de
var windowHeight = window.innerHeight;
qui n'existe pas sous IE...
D'ou mon problème...
Ca me retourne un undefined, qui par la suite des opérations me fait un joli NaN quand je veux calculer la hauteur de ma div "desktop" ... et a partir de la, j'ai droit a mon bug IE...
J'ai exploré toutes les propriétés de IE concernant la taille des fenetres (document.body.clientHeight entre autres) qui ne me retourne jamais la bonne taille...
60px dans le meilleur des cas, alors que j'attends près de 800px environ...
Investigations toujours avec mon problème...
En fait, après recherches, il s'avére que c'est IE qui me cause des soucis...
Voici mon script:
[php]function updateClock() {
var currentTime = new Date();
var systemTime = new Ajax.Request('./system_time.php', {onSuccess: function(response) {
currentTime.setTime(response);
}});
var days = {0: 'Dimanche', 1: 'Lundi', 2: 'Mardi', 3: 'Mercredi', 4: 'Jeudi', 5: 'Vendredi', 6: 'Samedi'};
var months = {0: 'Janvier', 1: 'Février', 2: 'Mars', 3: 'Avril', 4: 'Mai', 5: 'Juin', 6: 'Juillet', 7: 'Aout', 8:'Septembre', 9:'Octobre', 10: 'Novembre', 11: 'Décembre'};
var timeData = {'hour': (currentTime.getHours() < 10 ? '0' + currentTime.getHours() : currentTime.getHours()) + ':' + (currentTime.getMinutes() < 10 ? '0' + currentTime.getMinutes() : currentTime.getMinutes()), 'date': days[currentTime.getDay()] + ' ' + (currentTime.getDate() < 10 ? '0' + currentTime.getDate() : currentTime.getDate()) + ' ' + months[currentTime.getMonth()] + ' ' + currentTime.getFullYear()};
$('time').update(timeData.hour);
$('date').update(timeData.date);
}
function resizeDesktop() {
//resizing #desktop
//getting window total height
var windowHeight = window.innerHeight;
//getting other elements
var blockElements = $$('body > div[class~="block-element"]');
var totalHeight = 0;
blockElements.each(function(el){
alert(el.id + ':' + el.clientHeight);
totalHeight = parseInt(totalHeight) + parseInt(el.clientHeight);
});
var desktopHeight = windowHeight-totalHeight;
$('desktop').setStyle({height: desktopHeight + 'px'});
//resizing #appsbar div.apps-list width
var windowWidth = window.innerWidth;
var appsListElements = $$('div#appsbar div.apps-list');
}
//What to do on window loading ?
Event.observe(window, 'load', function() {
//syncronizing with server time
updateClock();
//we update clock every minute
new PeriodicalExecuter(updateClock, 60);
resizeDesktop();
});
//what to do on window resizing ?
Event.observe(window, 'resize', function() {
resizeDesktop();
});[/php]
Mon problème se situe au niveau de [php]var windowHeight = window.innerHeight;[/php] qui n'existe pas sous IE...
D'ou mon problème...
Ca me retourne un undefined, qui par la suite des opérations me fait un joli NaN quand je veux calculer la hauteur de ma div "desktop" ... et a partir de la, j'ai droit a mon bug IE...
J'ai exploré toutes les propriétés de IE concernant la taille des fenetres (document.body.clientHeight entre autres) qui ne me retourne jamais la bonne taille...
60px dans le meilleur des cas, alors que j'attends près de 800px environ...