J'ai le code suivant sur un site Web:
window.onload = resize;
window.onresize = resize;
function resize(){
heightWithoutHeader = (window.innerHeight - 85) + "px";
document.getElementById("main-table").style.height = heightWithoutHeader;
document.getElementById("navigation").style.height = heightWithoutHeader;
}
onresize
fonctionne bien, mais l'événement onload
ne se déclenche jamais. Je l'ai essayé dans Firefox et Chrome et aucun d'eux ne fonctionne.
Merci pour votre aide et allez pour la réputation! ;RÉ
Je pense que ce qui se passe probablement ici, c'est que votre window.onload
Est remplacé plus tard, assurez-vous que ce n'est pas via des choses comme <body onload="">
Vous pouvez vérifier cela par alert(window.onload)
dans votre fonction de redimensionnement, pour voir ce qui y est réellement attaché.
Je l'ai fait lorsque j'ai ajouté le code jQuery tiers dont nous avions besoin pour un partenaire. J'aurais pu facilement convertir mon window.onload désuet en un document jQuery prêt. Cela dit, je voulais savoir s'il existe une solution moderne compatible avec tous les navigateurs.
Il y a!
window.addEventListener ?
window.addEventListener("load",yourFunction,false) :
window.attachEvent && window.attachEvent("onload",yourFunction);
Sachez que je sais que je peux convertir mon code pour utiliser la route jQuery. Et, je vais demander à notre partenaire de refactoriser son code afin qu'il cesse d'affecter les sites.
Source où j'ai trouvé le correctif -> http://ckon.wordpress.com/2008/07/25/stop-using-windowonload-in-javascript/
Déplacez la ligne window.onload à la fin du fichier javascript ou après la fonction initiale et cela fonctionnera:
function resize(){
heightWithoutHeader = (window.innerHeight - 85) + "px";
document.getElementById("main-table").style.height = heightWithoutHeader;
document.getElementById("navigation").style.height = heightWithoutHeader;
}
// ...
// at the end of the file...
window.onload = resize;
window.onresize = resize;
Mais c'est une meilleure pratique si vous ne remplacez pas aussi la surcharge. Attachez plutôt votre fonction à l'événement onload:
function resize(){
heightWithoutHeader = (window.innerHeight - 85) + "px";
document.getElementById("main-table").style.height = heightWithoutHeader;
document.getElementById("navigation").style.height = heightWithoutHeader;
}
// ...
// at the end of the file...
window.addEventListener ?
window.addEventListener("load",resize,false)
:
window.attachEvent && window.attachEvent("onload",resize);
Cela a fonctionné pour moi et désolé pour mon anglais.
Cela fonctionne pour moi, je pense que votre problème est ailleurs:
function resize(){
var tester = document.getElementById("tester"),
html = tester.innerHTML
tester.innerHTML = html + "resize <br />"
}
window.onload = resize;
window.onresize = resize;
vous pouvez le tester vous-même ici: http://jsfiddle.net/Dzpeg/2/
êtes-vous sûr que c'est le seul événement appelé onLoad? Peut-être qu'un autre événement onLoad crée un conflit
Cela fonctionnera lorsque vous appelez le "window.onload" à côté de la fonction resize ()
Pour moi, window.onload
ne fonctionnait pas lors de l'écriture à l'intérieur script type="text/javascript
tag.
Au lieu de cela, il fallait écrire la même chose dans script language="Javascript" type="text/javascript
tag et cela a bien fonctionné.