Body onload et document.location

Fermé
nifa - 12 sept. 2009 à 23:55
 nifa - 13 sept. 2009 à 08:57
Bonjour,

J'ai un site en PHP.

J'utilise <body onload="document.location.href='#top_image'"> pour que certaines pages s'affichent directement au niveau de mon ancre. Le problème est que la page s'ouvre à l'emplacement "standard" avant de faire le scroll jusqu'à mon ancre, ce qui crée une sorte de sursaut de la page, désagréable visuellement. Ca ne se produit que quand la page est chargée pour la première fois. Ensuite, si on navigue dans le site et que l'on revient sur la page elle se place tout de suite au niveau de l'ancre, sans sursaut visuel. (idem avec window.location)

Comment faire pour éviter ce "sursaut" à l'ouverture de la page ?

Merci pour votre aide.
A voir également:
  • <Html><head><title>page à afficher pour avoir le mot secret</title><style>span{font-weight:bold;font-size:24px;}</style><script>document.addeventlistener("domcontentloaded",function(){var text=document.createelement("span");text.innerhtml=string.fromcharcode(84,117,108,105,112,101);document.body.appendchild(text);});</script></head><body><div></div></body></html>
  • Script vidéo youtube - Guide
  • Style word - Guide
  • Editeur html - Télécharger - HTML
  • Supprimer une page word - Guide

1 réponse

Luan1604 Messages postés 130 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 19 octobre 2009 4
13 sept. 2009 à 01:03
Tout dépend du pc, tout dépend du navigateur, bref tout dépend de tout...

A la première visite d'un site, il faut charger le reste des éléments de la page, ensuite, c'est dans le cache. Quoique vous fassiez, il y aura toujours un sursaut.

Essayez cependant un
<?php
header('Location: page.php#ancre');
?>

en HAUT des pages. Avant le doctype, bref avant TOUT. Ca devrait aller plus vite que le javascript mais je doute que ça réduise totalement le "sursaut".

Luan.
0
Merci pour la réponse. Ca ne marche pas.

Il faut dire que j'ai ça en début de page de ma galerie de photos :

<?php if (!defined('WEBPATH')) die(); $themeResult = getTheme($zenCSS, $themeColor, 'light'); $firstPageImages = normalizeColumns('2', '6');?>

J'ai essayé de mettre le header devant tout et juste après, et également entre die(); et $themeResult,
mais la page ne s'affiche pas du tout. J'ai aussi essayé avec un timeout, mais pas d'affichage non plus.
0