Запуск Bootstrap Modal при загрузке страницы
Я вообще не знаю javascript. Документация начальной загрузки говорит
Вызвать модальный через javascript: $('# myModal'). modal (options)
Я не знаю, как это назвать при загрузке страницы. Используя предоставленный код на странице начальной загрузки, я могу успешно вызвать Modal на щелчке элемента, но я хочу, чтобы он сразу загружался при загрузке страницы.
Ответы
Ответ 1
Просто оберните модальный, который вы хотите вызвать на загрузку страницы внутри события jQuery load
в разделе заголовка вашего документа, и он должен появиться, например:
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>
Вы все равно можете вызвать модальный текст на своей странице, вызвав его ссылкой:
<a class="btn" data-toggle="modal" href="#myModal" >Launch Modal</a>
Ответ 2
Вам не нужно javascript
показывать модальные
Самый простой способ - заменить "hide" на "in"
class="modal fade hide"
так
class="modal fade in"
и вам нужно добавить onclick = "$('.modal').hide()"
на кнопку закрытия;
PS: Я думаю, что лучший способ - добавить jQuery script:
$('.modal').modal('show');
Ответ 3
Просто добавьте следующее -
class="modal show"
Рабочий пример -
<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">×</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>
Ответ 4
Вы можете попробовать этот исполняемый код -
$(window).load(function()
{
$('#myModal').modal('show');
});
<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 fade" 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">×</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>
Ответ 5
относительно того, что говорит Андре Ильич, вы должны добавить
js script
после строки в том, что вы называете 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>
в моем случае это была проблема, надеюсь, что это поможет
Ответ 6
Вы можете активировать модальный код без написания JavaScript просто с помощью атрибутов данных.
Параметр "показать", установленный в true, показывает модальный при инициализации:
<div class="modal fade" tabindex="-1" role="dialog" data-show="true"></div>
Ответ 7
В моем случае добавление jQuery для отображения модальности не помогло:
$(document).ready(function() {
$('#myModal').modal('show');
});
Казалось, что модальный атрибут aria-hidden = "true":
<div class="modal fade" aria-hidden="true" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
Удаление этого атрибута необходимо, а также jQuery выше:
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
Обратите внимание, что я попытался изменить модальные классы от modal fade
до modal fade in
, и это не сработало. Кроме того, изменение классов от modal fade
до modal show
остановило модальность от возможности закрываться.
Ответ 8
Вот решение (без инициализации javascript!)
Я не смог найти пример без, инициализирующий ваш модальный с помощью javascript, $('#myModal').modal('show')
, поэтому предлагает предложение о том, как вы могли бы реализовать его без задержки javascript на странице нагрузки.
- Отредактируйте свой модальный контейнер div с помощью класса и стиля:
<div class="modal in" id="MyModal" tabindex="-1" role="dialog" style="display: block; padding-right: 17px;">
-
Отредактируйте свое тело с помощью класса и стиля:
<body class="modal-open" style="padding-right:17px;">
-
Добавить div div div
<div class="modal-backdrop in"></div>
-
Добавить script
$(document).ready(function() {
$('body').css('padding-right', '0px');
$('body').removeClass('modal-open');
$('.modal-backdrop').remove();
$('#MyModal').modal('show'); });
Что произойдет, так это то, что html для вашего модального файла будет загружен при загрузке страницы без javascript (без задержки). На этом этапе вы не можете закрыть модальный, поэтому у нас есть document.ready script, чтобы загрузить модально правильно, когда все загружено. Мы фактически удалим пользовательский код и затем инициализируем модальный (снова) с помощью .modal('show').
Ответ 9
<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>
Вы можете показать его при запуске даже без Javascript. Просто удалите класс "скрыть".
class="Modal"
Ответ 10
Протестировано с Bootstrap 3 и jQuery (2.2 и 2.3)
$(window).on('load',function(){
$('#myModal').modal('show');
});
<!-- Modal -->
<div class="modal fade" 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">×</button>
<h4 class="modal-title"><i class="fa fa-exclamation-circle"></i> //Your modal Title</h4>
</div>
<div class="modal-body">
//Your modal Content
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Fechar</button>
</div>
</div>
</div>
</div>
https://jsfiddle.net/d7utnsbm/
Ответ 11
В bootstrap 3 вам просто нужно инициализировать modal через js, и если в момент загрузки страницы модальная разметка находится на странице, модальная будет отображаться.
Если вы хотите предотвратить это, используйте опцию show: false
, где вы инициализируете модальный. Что-то вроде этого:
$('.modal').modal({ show: false })
Ответ 12
В дополнение к ответам пользователя2545728 и Reft, без javascript, но с modal-backdrop in
3 вещи для добавления
- div с классами
modal-backdrop in
перед классом .modal
-
style="display:block;"
в класс .modal
-
fade in
вместе с классом .modal
Пример
<div class="modal-backdrop in"></div>
<div class="modal fade in" tabindex="-1" role="dialog" aria-labelledby="channelModal" style="display:block;">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="channelModal">Welcome!</h4>
</div>
<div class="modal-body" style="height:350px;">
How did you find us?
</div>
</div>
</div>
</div>
Ответ 13
Как уже упоминалось, создайте свой модал с помощью display: block
<div class="modal in" tabindex="-1" role="dialog" style="display:block">
...
Поместите фон в любом месте на своей странице, он не обязательно должен быть внизу страницы
<div class="modal-backdrop fade show"></div>
Затем, чтобы снова закрыть диалоговое окно, добавьте этот
<script>
$("button[data-dismiss=modal]").click(function () {
$(".modal.in").removeClass("in").addClass("fade").hide();
$(".modal-backdrop").remove();
});
</script>
Надеюсь, это поможет
Ответ 14
Обновление 2018 - Bootstrap 4
Модальная разметка немного изменилась для Bootstrap 4. Вот как вы можете открыть модал при загрузке страницы и опционально отложить отображение модальности...
$(window).on('load',function(){
var delayMs = 1500; // delay in milliseconds
setTimeout(function(){
$('#myModal').modal('show');
}, delayMs);
});
<div class="modal fade" id="myModal">
<div class="modal-dialog modal-lg modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">My Modal</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary mx-auto" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
Демонстрация на Codeply
Ответ 15
Возможно, вы захотите оставить jquery.js
отложенным для более быстрой загрузки страницы. Однако, если jquery.js
отложено, $(window).load
может не работать. Затем вы можете попробовать
setTimeout(function(){$('#myModal').modal('show');},3000);
он выведет ваш модальный текст после полной загрузки страницы (включая jquery)
Ответ 16
Простой пример. Сделайте загрузчик модального загрузчика
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script>
$(document).ready(function(){
$('#myModal').modal('show');
setTimeout(function(){
$('#myModal').modal('hide');
}, 5000);
});
</script>
<style>
.loader {
border: 13px solid #f3f3f3;
border-radius: 50%;
border-top: 16px solid #3498db;
width: 100px;
height: 100px;
-webkit-animation: spin 2s linear infinite; /* Safari */
animation: spin 2s linear infinite;
}
/* Safari */
@-webkit-keyframes spin {
0% { -webkit-transform: rotate(0deg); }
100% { -webkit-transform: rotate(360deg); }
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.modal-dialog{
width: 150px;
margin: 10% auto;
}
.modal-content{
background-color: transparent;
border: 0;
border-radius: 0;
outline: 0;
box-shadow: none;
}
</style>
</head>
<body>
<div class="container">
<!-- Modal -->
<div class="modal fade" data-backdrop="static" id="myModal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-body">
<div class="loader"></div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
Ответ 17
Если вы хотите показать модальный, когда страница все еще загружается,
Вызовите $("modal_selector").modal("show")
внутри $("document").ready()
,
и закрыть там на $(window).on("load")
мероприятии!
Почему? см.: fooobar.com/questions/9298/...
Ответ 18
Чтобы избежать перезапуска начальной загрузки и потери ее функциональности, просто создайте обычную кнопку запуска, предоставьте ей Id и "щелкните по ней" с помощью jquery, например, так:
Кнопка запуска:
<button type="button" id="btnAnouncement" class="btn btn-primary" data-toggle="modal" data-target="#modalAnouncement">
See what´s new!
</button>
Триггер jQuery:
$(document).ready(function () {
$('#btnAnouncement').click();
)}
Надеюсь, это поможет. Ура!