web-dev-qa-db-fra.com

Javascript en HTML

Je souhaite poser une question à propos de la onload de Javascript. 

J'écris une page JSP avec le code <%@ include file ="body.jsp". Le body.jsp inclus contient: 

<table onload="function()">

Ceci devrait charger la fonction javascript, mais cela ne semble pas avoir d’effet sur la page. onload est-il uniquement utilisable sur la balise body

21
Questions

Onload ne peut être utilisé que pour les balises <body>, <img>, <script>, <iframe>, car il vous indique quand une ressource externe (image, script, image) ou la page entière (corps)

Depuis HTML5, ceux-ci peuvent également déclencher un événement load: <link>, <style>, <input type=image>, <object>
La prise en charge de ceux-ci peut toujours être un hasard ou rater ( par exemple, les anciens navigateurs Android )

39
gblazex

Pourquoi ne pas simplement l'inclure via un <script tag>?

Dans votre fichier .jsp

<script>
    window.onload = function() {
        alert("Hello!");
    }
    // or to execute some function
    window.onload = myFunction; //notice no parenthesis
</script>
14
Marko

Comme les autres gars l'ont déjà indiqué, l'événement onLoad ne se déclenchera pas sur une table. Ce que vous pouvez faire consiste à attacher le gestionnaire onLoad à l’élément body (qui se déclenchera ensuite, lorsque la page sera chargée) et à manipuler la table, par exemple en lui affectant un identifiant.

<body onload="function() { var table = document.getElementById("table-id"); ... }">
    <table id="table-id"></table>
</body>

Utilisez-vous un framework javascript?

3
philgiese

"onLoad" peut être utilisé sur les balises body et frameset ... ..

<body onload="function(){alert('This is an action!')}">
2
Thariama

Le moyen le plus simple que je trouve est d'utiliser un fichier javascript externe et jquery.

// Variables and functions you want to declare 
var socket = io.connect();
// .....

// Function you want to run on load
$(function() {
    $('#submit').click(function() {addUser();});
    // ... any other functions you want to run on load
});

Ceci est un extrait de code de quelque chose sur lequel je travaillais. La variable est déclarée avant l'exécution du code (elle crée un socket Web) . Ensuite, il y a le sélecteur de document jquery ($) qui s'exécute au chargement et appelle la fonction init pour modifier mon code HTML. Je l'utilise pour appeler une fonction anonyme qui s'exécute immédiatement.

0
pangolin

Vous pouvez lancer une balise <script> juste après votre table avec le code. Une fois que cela se trouve dans la balise de script, cela signifie que le DOM pour l'élément de table situé au-dessus de celui-ci a été chargé et peut désormais être consulté dans votre script en dessous.

Remarque : Le texte ci-dessous ne s'applique pas à la question, mais aux autres réponses données.

Je recommande d'utiliser la fonction addEventListener en javascript pour ajouter l'événement. Cela garantit que vous n'écrasez pas ou ne serez pas écrasé par toute autre personne désireuse d'écouter l'événement.

Exemple

var iframe = document.getElementsByTagName('iframe')[0];
iframe.addEventListener('load', function(event){ console.log("iframe Loaded", event); })
0
CTS_AE