Ir para o conteúdo principal Pular para a navegação de documentos
in English

JavaScript

Dê vida ao Bootstrap com nossos plugins JavaScript opcionais. Saiba mais sobre cada plug-in, nossos dados e opções de API programática e muito mais.

Individual ou compilado

Os plugins podem ser incluídos individualmente (usando o Bootstrap individual js/dist/*.js), ou todos de uma vez usando bootstrap.jsou minificado bootstrap.min.js(não inclua ambos).

Se você usa um bundler (Webpack, Rollup…), você pode usar /js/dist/*.jsarquivos prontos para UMD.

Usando o Bootstrap como um módulo

Fornecemos uma versão do Bootstrap construída como ESM( bootstrap.esm.jse bootstrap.esm.min.js) que permite que você use o Bootstrap como um módulo em seu navegador, se os navegadores de destino o suportarem .

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

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

Plug-ins incompatíveis

Devido às limitações do navegador, alguns dos nossos plugins, nomeadamente os plugins Dropdown, Tooltip e Popover, não podem ser utilizados numa <script>etiqueta com moduletipo porque dependem do Popper. Para obter mais informações sobre o problema, consulte aqui .

Dependências

Alguns plugins e componentes CSS dependem de outros plugins. Se você incluir plugins individualmente, certifique-se de verificar essas dependências nos documentos.

Nossos menus suspensos, popovers e dicas de ferramentas também dependem do Popper .

Ainda quer usar jQuery? É possível!

O Bootstrap 5 foi projetado para ser usado sem jQuery, mas ainda é possível usar nossos componentes com jQuery. Se o Bootstrap detectar jQueryno windowobjeto , ele adicionará todos os nossos componentes no sistema de plugins do jQuery; isso significa que você poderá fazer $('[data-bs-toggle="tooltip"]').tooltip()para habilitar dicas de ferramentas. O mesmo vale para nossos outros componentes.

Atributos de dados

Quase todos os plugins do Bootstrap podem ser habilitados e configurados apenas por meio de HTML com atributos de dados (nossa maneira preferida de usar a funcionalidade JavaScript). Certifique-se de usar apenas um conjunto de atributos de dados em um único elemento (por exemplo, você não pode acionar uma dica de ferramenta e modal a partir do mesmo botão).

Seletores

Atualmente para consultar os elementos DOM usamos os métodos nativos querySelectore querySelectorAllpor questões de performance, então você tem que usar seletores válidos . Se você usar seletores especiais, por exemplo: collapse:Examplecertifique-se de escapar deles.

Eventos

O Bootstrap fornece eventos personalizados para ações exclusivas da maioria dos plugins. Geralmente, eles vêm na forma de infinitivo e particípio passado - onde o infinitivo (ex. show) é acionado no início de um evento e sua forma de particípio passado (ex. shown) é acionada na conclusão de uma ação.

Todos os eventos infinitivos fornecem preventDefault()funcionalidade. Isso fornece a capacidade de interromper a execução de uma ação antes que ela comece. Retornar false de um manipulador de eventos também chamará automaticamente preventDefault().

var myModal = document.getElementById('myModal')

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

eventos jQuery

O Bootstrap detectará o jQuery se jQueryestiver presente no windowobjeto e não houver nenhum data-bs-no-jqueryatributo definido em <body>. Se o jQuery for encontrado, o Bootstrap emitirá eventos graças ao sistema de eventos do jQuery. Portanto, se você quiser ouvir os eventos do Bootstrap, terá que usar os métodos jQuery ( .on, .one) em vez de addEventListener.

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

API programática

Todos os construtores aceitam um objeto de opções opcional ou nada (que inicia um plugin com seu comportamento padrão):

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

Se você deseja obter uma instância de plug-in específica, cada plug-in expõe um getInstancemétodo. Para recuperá-lo diretamente de um elemento, faça o seguinte: bootstrap.Popover.getInstance(myPopoverEl).

Seletores CSS em construtores

Você também pode usar um seletor CSS como o primeiro argumento em vez de um elemento DOM para inicializar o plug-in. Atualmente, o elemento para o plugin é encontrado pelo querySelectormétodo, pois nossos plugins suportam apenas um único elemento.

var modal = new bootstrap.Modal('#myModal')
var dropdown = new bootstrap.Dropdown('[data-bs-toggle="dropdown"]')

Funções e transições assíncronas

Todos os métodos de API programáticos são assíncronos e retornam ao chamador assim que a transição é iniciada, mas antes que ela termine .

Para executar uma ação quando a transição estiver concluída, você pode ouvir o evento correspondente.

var myCollapseEl = document.getElementById('myCollapse')

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

Além disso, uma chamada de método em um componente de transição será ignorada .

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

myCarouselEl.addEventListener('slid.bs.carousel', function (event) {
  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 !!

Configurações padrão

Você pode alterar as configurações padrão de um plug-in modificando o Constructor.Defaultobjeto do plug-in:

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

Sem conflito (somente se você usar jQuery)

Às vezes é necessário usar plugins do Bootstrap com outros frameworks de UI. Nessas circunstâncias, colisões de namespace podem ocorrer ocasionalmente. Se isso acontecer, você pode chamar .noConflicto plugin para o qual deseja reverter o valor.

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

Números de versão

A versão de cada um dos plugins do Bootstrap pode ser acessada através da VERSIONpropriedade do construtor do plugin. Por exemplo, para o plug-in de dica de ferramenta:

bootstrap.Tooltip.VERSION // => "5.1.3"

Sem fallbacks especiais quando o JavaScript está desabilitado

Os plugins do Bootstrap não retornam de forma particularmente graciosa quando o JavaScript está desabilitado. Se você se preocupa com a experiência do usuário nesse caso, use <noscript>para explicar a situação (e como reativar o JavaScript) para seus usuários e/ou adicione seus próprios fallbacks personalizados.

Bibliotecas de terceiros

O Bootstrap não suporta oficialmente bibliotecas JavaScript de terceiros, como Prototype ou jQuery UI. Apesar .noConflictdos eventos com namespace, pode haver problemas de compatibilidade que você precisa corrigir por conta própria.

Desinfetante

As dicas de ferramentas e os popovers usam nosso desinfetante integrado para limpar as opções que aceitam HTML.

O allowListvalor padrão é o seguinte:

var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
var DefaultAllowlist = {
  // 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: []
}

Se você quiser adicionar novos valores a esse padrão allowList, faça o seguinte:

var myDefaultAllowList = bootstrap.Tooltip.Default.allowList

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

// To allow td elements and data-bs-option attributes on td elements
myDefaultAllowList.td = ['data-bs-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-]+/
myDefaultAllowList['*'].push(myCustomRegex)

Se você deseja ignorar nosso desinfetante porque prefere usar uma biblioteca dedicada, por exemplo DOMPurify , faça o seguinte:

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