Перейти к основному содержанию

JavaScript

Оживите Bootstrap с помощью наших дополнительных плагинов JavaScript. Узнайте о каждом плагине, наших данных и параметрах программного API и многом другом.

Содержание

Индивидуальный или составной

Плагины могут быть включены индивидуально (с использованием индивидуального Bootstrap js/dist/*.js) или все сразу с использованием bootstrap.js или минифицированных bootstrap.min.js (не включайте оба).

Если вы используете сборщик (Webpack, Rollup…), вы можете использовать /js/dist/*.js файлы, готовые для UMD.

Использование Bootstrap как модуля

Мы предоставляем версию Bootstrap, построенную как ESM (bootstrap.esm.js и bootstrap.esm.min.js), которая позволяет вам использовать Bootstrap в качестве модуля в вашем браузере, если ваши целевые браузеры поддерживают его.

<script type="module">
  import {  Toast } from 'bootstrap.esm.min.js'

  Array.from(document.querySelectorAll('.toast'))
    .forEach(toastNode => new Toast(toastNode))
</script>

Несовместимые плагины

Из-за ограничений браузера некоторые из наших плагинов, а именно плагины Dropdown, Tooltip и Popover, нельзя использовать в <script> тегах с module типом, поскольку они зависят от Popper.js. Дополнительную информацию о проблеме см. здесь.

Зависимости

Некоторые плагины и компоненты CSS зависят от других плагинов. Если вы включаете плагины по отдельности, обязательно проверьте наличие этих зависимостей в документации.

Наши выпадающие, всплывающие и всплывающие подсказки также зависят от Popper.js.

Все еще хотите использовать jQuery? Это возможно!

Bootstrap 5 разработан для использования без jQuery, но все же можно использовать наши компоненты с jQuery. Если Bootstrap обнаруживает jQuery в window объекте это добавит все наши компоненты в системе плагин JQuery в; это означает, что вы сможете $('[data-toggle="tooltip"]').tooltip() включить всплывающие подсказки. То же самое и с другими нашими компонентами.

Атрибуты данных

Почти все плагины Bootstrap можно включить и настроить только с помощью HTML с атрибутами данных (наш предпочтительный способ использования функциональности JavaScript). Убедитесь, что вы используете только один набор атрибутов данных для одного элемента (например, вы не можете запускать всплывающую подсказку и модальное окно с помощью одной кнопки).

Селекторы

В настоящее время для запроса элементов DOM мы используем собственные методы querySelector и querySelectorAllиз соображений производительности, поэтому вам необходимо использовать допустимые селекторы. Если вы используете специальные селекторы, например: collapse:Example не забудьте их экранировать.

События

Bootstrap предоставляет настраиваемые события для уникальных действий большинства плагинов. Как правило, они бывают в форме причастия прошедшего времени и инфинитива, где инфинитив (например show) запускается в начале события, а его форма причастия прошедшего времени (например shown) запускается при завершении действия.

Все инфинитивные события обеспечивают preventDefault() функциональность. Это дает возможность остановить выполнение действия до его запуска. При возврате false из обработчика событий также будет выполнен автоматический вызов preventDefault().

var myModal = document.getElementById('myModal')

myModal.addEventListener('show.bs.modal', function (e) { 
  if (!data) { 
    return e.preventDefault() // stops modal from being shown
  }
})

события jQuery

Bootstrap обнаружит jQuery, если jQueryон присутствует в window объекте и не data-no-jquery установлен атрибут <body>. Если jQuery найден, Bootstrap будет генерировать события благодаря системе событий jQuery. Поэтому, если вы хотите прослушивать события Bootstrap, вам придется использовать методы jQuery ( .on, .one) вместо addEventListener.

$('#myTab a').on('shown.bs.tab', function () { 
  // do something...
})

Программный API

Все конструкторы принимают необязательный объект параметров или ничего (который запускает плагин с его поведением по умолчанию):

var myModalEl = document.getElementById('myModal')

var modal = new bootstrap.Modal(myModalEl) // initialized with defaults
var modal = new bootstrap.Modal(myModalEl, {  keyboard: false }) // initialized with no keyboard

Если вы хотите получить конкретный экземпляр плагина, каждый плагин предоставляет getInstance метод. Для того , чтобы восстановить его непосредственно из элемента, выполните следующие действия : bootstrap.Popover.getInstance(myPopoverEl).

Асинхронные функции и переходы

Все программные методы API асинхронны и возвращаются вызывающей стороне после начала перехода, но до его завершения.

Чтобы выполнить действие после завершения перехода, вы можете прослушать соответствующее событие.

var myCollapseEl = document.getElementById('#myCollapse')

myCollapseEl.addEventListener('shown.bs.collapse', function (e) { 
  // Action to execute once the collapsible area is expanded
})

Кроме того, вызов метода переходного компонента будет проигнорирован.

var myCarouselEl = document.getElementById('myCarousel')
var carousel = bootstrap.Carousel.getInstance(myCarouselEl) // Retrieve a Carousel instance

myCarouselEl.addEventListener('slid.bs.carousel', function (e) { 
  carousel.to('2') // Will slide to the slide 2 as soon as the transition to slide 1 is finished
})

carousel.to('1') // Will start sliding to the slide 1 and returns to the caller
carousel.to('2') // !! Will be ignored, as the transition to the slide 1 is not finished !!

Настройки по умолчанию

Вы можете изменить настройки по умолчанию для плагина, изменив Constructor.Default объект плагина:

// changes default for the modal plugin's `keyboard` option to false
bootstrap.Modal.Default.keyboard = false

Нет конфликта (только если вы используете jQuery)

Иногда необходимо использовать плагины Bootstrap с другими фреймворками пользовательского интерфейса. В этих обстоятельствах иногда могут возникать конфликты пространств имен. Если это произойдет, вы можете вызвать .noConflict плагин, для которого хотите вернуть значение.

var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality

Номера версий

Доступ к версии каждого из плагинов Bootstrap можно получить через VERSION свойство конструктора плагина. Например, для плагина всплывающей подсказки:

bootstrap.Tooltip.VERSION // => "5.0.0-alpha1"

Никаких специальных резервных вариантов при отключенном JavaScript

Плагины Bootstrap не особо изящно отключаются при отключенном JavaScript. Если вы заботитесь о пользовательском опыте в этом случае, используйте, <noscript> чтобы объяснить ситуацию (и как повторно включить JavaScript) вашим пользователям и / или добавить свои собственные резервные варианты.

Сторонние библиотеки

Bootstrap официально не поддерживает сторонние библиотеки JavaScript, такие как Prototype или jQuery UI. Несмотря на .noConflict события и события в пространстве имен, могут возникнуть проблемы совместимости, которые вам нужно будет исправить самостоятельно.

Дезинфицирующее средство

Всплывающие подсказки и всплывающие окна используют наше встроенное средство очистки для очистки параметров, которые принимают HTML.

Значение по умолчанию whiteList следующее:

var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
var DefaultWhitelist = { 
  // Global attributes allowed on any supplied element below.
  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
  a: ['target', 'href', 'title', 'rel'],
  area: [],
  b: [],
  br: [],
  col: [],
  code: [],
  div: [],
  em: [],
  hr: [],
  h1: [],
  h2: [],
  h3: [],
  h4: [],
  h5: [],
  h6: [],
  i: [],
  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
  li: [],
  ol: [],
  p: [],
  pre: [],
  s: [],
  small: [],
  span: [],
  sub: [],
  sup: [],
  strong: [],
  u: [],
  ul: []
}

Если вы хотите добавить новые значения к этому значению по умолчанию, whiteList вы можете сделать следующее:

var myDefaultWhiteList = bootstrap.Tooltip.Default.whiteList

// To allow table elements
myDefaultWhiteList.table = []

// To allow td elements and data-option attributes on td elements
myDefaultWhiteList.td = ['data-option']

// You can push your custom regex to validate your attributes.
// Be careful about your regular expressions being too lax
var myCustomRegex = /^data-my-app-[\w-]+/
myDefaultWhiteList['*'].push(myCustomRegex)

Если вы хотите обойти наше средство дезинфекции, потому что предпочитаете использовать специальную библиотеку, например DOMPurify , вам следует сделать следующее:

var yourTooltipEl = document.getElementById('yourTooltip')
var tooltip = new bootstrap.Tooltip(yourTooltipEl, { 
  sanitizeFn: function (content) { 
    return DOMPurify.sanitize(content)
  }
})