11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
Dans une page xhtml, j'ai mis dans le head un window.onload.
Mais à l'appel de la page, celui-ci ne marche pas (rien ne s'affiche).
J'utilise JSF et le framework primeFaces.
Pouvez-vous m'aider à trouver une solution ?
Merci.
Mon code :
Appel de la page :

<p:commandLink value="Espace standard" 
                               style="position: absolute; top: 455px; left: 700px"
                               action="pageGraphiqueEspaceStandard.xhtml" 
                               actionListener="#{utilitaireManagerBean.initialiserPageCourante('graphiqueEspaceStandard')}"/>

Page appelée :

<script type="text/javascript">
                    window.onload = function ()
                    {
                        alert('OK');
                    };
                </script

Modifié par denisduval75 (16 Nov 2019 - 08:38)
Mauvaise idée !!!
la page HTML est chargée mais le navigateur n'a pas encore analysé le <body> de la page pour créer le fameux arbre dom.
Et comme tu as mis ton script dans le <head>, il cherche à l'exécuter avant d'avoir créé l'arbre.
Moralité : Place ton script avant la balise fermante </body> et tu n'auras plus besoin de guetter l'événement load :
......
<script>
(function() {
  'use strict';
   alert('Ok !');
}();
</script>
</body></html>

La méthode ci-dessus évite les effets de bord entre variables de différents scricpts.
Modifié par bazooka07 (16 Nov 2019 - 01:05)
<!DOCTYPE html>
<html lang="fr">
<head>
	<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
	<title>Test</title>
	<style>
		#nav.active { background: lime; }
	</style>
</head><body>
	<header>
	</header>
	<nav id="nav">
		<label for="nav-id">Menu</label>
		<input id="nav-id" type="checkbox" />
		<ul>
			<li>Entrée 1</li>
			<li>Entrée 2</li>
		</ul>
	</nav>
	<aside id="aside">
	</aside>
	<section id="main">
		<div><img src="https://picsum.photos/seed/picsum/800/400" />
		</div>
	</section>
	<footer>
	</footer>
	<script>
		(function() {
			'use strict';
			document.getElementById('nav').classList.add('active');
			alert('Ok');
		})();
	</script>
</body></html>

Je ne connais pas JSF et le framework primeFaces.

T'es full stack ?
Java (JSF) s'execute côté serveur. La page s'affiche côté navigateur
Il faut modifier ton template sur le serveur.