J'ai une page Web où je veux que l'utilisateur voit une nouvelle image quand ils mettent leur souris sur une certaine partie de l'image. J'ai utilisé une carte d'image.Comment puis-je pré-mettre en cache des images pour un affichage rapide avec javascript?
<img src="pic.jpg" usemap="#picmap" />
<map id="picmap" name="picmap"><area shape="rect" coords ="10,20,30,40"
onMouseOver="mouse_on_write('mouse is on spot')"
onMouseOut="mouse_off('mouse is off spot')"
href="http://www....html" target="_blank" />
</map>
<p id="desc"></p>
Lorsque, dans l'en-tête je définissais ces fonctions:
<script type="text/javascript">
function mouse_off(txt)
{
document.getElementById("desc").innerHTML=txt;
document.p1.src="pic.jpg";
}
function mouse_on_write(txt)
{
document.getElementById("desc").innerHTML=txt;
document.p1.src="pic2.jpg";
</script>
Il fonctionne, mais il est lent. Lorsque la souris est placée sur la deuxième image, il faut quelques secondes pour apparaître; Ma solution temporaire consistait à réduire drastiquement la taille des images car elles étaient énormes (à 2,5 Mo, elles passent rapidement, mais ne sont pas toujours transparentes). Comment rendre le changement d'image plus transparent sans réduire la qualité de l'image? En y réfléchissant, je me rends compte que je pourrais aussi avoir les deux images affichées, à petite et grande échelle, et sur la souris, elles changeraient de place; Comment ferais-je cela? Est-ce que cela réduirait le décalage?
Par ailleurs, vous êtes probablement pas vouloir infliger 2,5 Mo image sur vos utilisateurs de toute façon. Quelles sont les dimensions de l'espace que vous essayez de remplir? – dshaw