268 votes

Lancer la modale Bootstrap au chargement de la page

Je ne connais pas du tout JavaScript. La documentation de Bootstrap dit de

Appelez la modale via JavaScript : $('#myModal').modal(options)

Je n'ai aucune idée de la façon dont on peut appeler cela lors du chargement d'une page. En utilisant le code fourni sur la page Bootstrap, je peux appeler la modale en cas de clic sur un élément, mais je veux qu'elle se charge immédiatement lors du chargement d'une page.

15 votes

@rlemon - Pas nécessairement ; la question portait strictement sur les modales Bootstrap et non sur l'exécution de fonctions au chargement de la page en général. La modale Bootstrap peut également être manipulée via des classes CSS, voir l'une des réponses.

0 votes

Cela va aider. Plus simple : w3schools.com/jsref/ avec l'événement onload

503voto

Andres Ilich Points 41712

Il suffit d'intégrer la modale que vous souhaitez appeler au chargement de la page dans un fichier jQuery load sur la section d'en-tête de votre document et il devrait s'afficher, comme suit :

JS

<script type="text/javascript">
    $(window).on('load', function() {
        $('#myModal').modal('show');
    });
</script>

HTML

<div class="modal hide fade" id="myModal">
    <div class="modal-header">
        <a class="close" data-dismiss="modal">×</a>
        <h3>Modal header</h3>
    </div>
    <div class="modal-body">
        <p>One fine body…</p>
    </div>
    <div class="modal-footer">
        <a href="#" class="btn">Close</a>
        <a href="#" class="btn btn-primary">Save changes</a>
    </div>
</div>

Vous pouvez toujours appeler la modale à l'intérieur de votre page en l'appelant avec un lien comme ceci :

<a class="btn" data-toggle="modal" href="#myModal">Launch Modal</a>

21 votes

Cette réponse est correcte. Il est à noter que cela ne fonctionnera PAS du tout sur l'événement "document prêt" : $(document).ready( ... . Il ne fonctionnera que sur l'événement de chargement de la fenêtre : $(window).load( ... .

5 votes

Autre remarque importante : beaucoup de personnes placent leurs includes javascript à la fin du corps. Dans ce cas, la fonction onload doit être incluse à la fin, après les includes.

0 votes

@racl101 C'est le contraire pour moi (cela fait 2 ans depuis votre post, donc les choses ont peut-être changé). Cela ne fonctionne qu'avec $(document).ready( ... quand je stocke ce script dans un MVC PartialView pour mon Modal qui est dynamiquement ajouté quand un utilisateur clique sur quelque chose, donc peut-être que c'est la raison. Ironiquement, votre avertissement de ce que pas à faire m'a permis de comprendre comment le faire fonctionner pour moi. Alors merci :)

93voto

user2545728 Points 169

Vous n'avez pas besoin javascript pour montrer la modalité

Le plus simple est de remplacer "hide" par "in".

class="modal fade hide"

donc

class="modal fade in"

et vous devez ajouter onclick = "$('.modal').hide()" à la fermeture du bouton ;

PS : Je pense que le meilleur moyen est d'ajouter jQuery script :

$('.modal').modal('show');

1 votes

J'ai essayé cette méthode mais j'ai rencontré deux problèmes. 1) la modale ne se ferme pas. 2) L'arrière-plan de la modale a disparu. Avez-vous des idées ?

2 votes

La solution jquery ci-dessus fonctionne très bien. Une ligne de code fait l'affaire. @NickGreen Essayez ceci : class="modal fade". Supprimez "hide" et "in". Cela fonctionne dans mon cas mais ce n'est pas encore en ligne, sinon je posterais le lien.

44voto

GAURAV MAHALE Points 175

Il suffit d'ajouter ce qui suit

class="modal show"

Exemple de travail -

<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

<div class="container">
  <!-- Trigger the modal with a button -->
  <button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>

  <!-- Modal -->
  <div class="modal show" id="myModal" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Modal Header</h4>
        </div>
        <div class="modal-body">
          <p>Some text in the modal.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>

    </div>
  </div>

</div>

11 votes

Cette solution ne fonctionne pas : la boîte de dialogue reste en permanence en haut de la page. De plus, si vous utilisez la classe "fade" en même temps que "modal", le dialogue n'apparaîtra pas du tout.

7 votes

Cela dépend du scénario dans lequel la modale doit être affichée. Dans mon cas, je veux que la modale soit bloquée en permanence.

0 votes

J'ai également rencontré le problème de Bob

9voto

user1958346 Points 23

Concernant ce que dit Andre's Ilich, vous devez ajouter le js script après la ligne dans ce que vous appelez le jquery :

<script src="content/bootstrapJS/jquery-2.1.1.min.js" type="text/javascript"></script>

<script type="text/javascript">
     $(window).load(function(){
         $('#myModal').modal('show');
      });
</script>

Dans mon cas, c'était le problème. J'espère que cela vous aidera.

3voto

SPIELER Points 1600
<div id="ModalStart" class="modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-body">
          <p><i class="icon-spinner icon-spin icon-4x"></i></p>
    </div>
</div>

Vous pouvez l'afficher au démarrage même sans Javascript. Il suffit de supprimer la classe "hide".

class="Modal"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X