Prijeđi na glavni sadržaj Prijeđi na navigaciju dokumentima
in English

JavaScript

Oživite Bootstrap s našim dodatnim JavaScript dodacima. Saznajte više o svakom dodatku, našim podacima i opcijama programskog API-ja i više.

Pojedinačni ili sastavljeni

Dodaci se mogu uključiti pojedinačno (koristeći Bootstrap's individual js/dist/*.js), ili sve odjednom pomoću bootstrap.jsili umanjenog bootstrap.min.js(nemojte uključivati ​​oboje).

Ako koristite bundler (Webpack, Rollup…), možete koristiti /js/dist/*.jsdatoteke koje su spremne za UMD.

Korištenje Bootstrapa kao modula

Nudimo verziju Bootstrapa izgrađenu kao ESM( bootstrap.esm.jsi bootstrap.esm.min.js) koja vam omogućuje korištenje Bootstrapa kao modula u vašem pregledniku, ako to vaši ciljani preglednici podržavaju .

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

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

Nekompatibilni dodaci

Zbog ograničenja preglednika, neki od naših dodataka, naime dodaci Dropdown, Tooltip i Popover, ne mogu se koristiti u <script>oznaci s moduletipom jer ovise o Popperu. Za više informacija o problemu pogledajte ovdje .

Ovisnosti

Neki dodaci i CSS komponente ovise o drugim dodacima. Ako dodate dodatke pojedinačno, svakako provjerite te ovisnosti u dokumentima.

Naši padajući izbornici, skočni prozori i opisi alata također ovise o Popperu .

I dalje želite koristiti jQuery? To je moguće!

Bootstrap 5 dizajniran je za korištenje bez jQueryja, ali još uvijek je moguće koristiti naše komponente s jQueryjem. Ako Bootstrap otkrije jQueryu windowobjektu , dodati će sve naše komponente u jQueryjev sustav dodataka; to znači da ćete moći učiniti $('[data-bs-toggle="tooltip"]').tooltip()da omogućite opise alata. Isto vrijedi i za ostale naše komponente.

Atributi podataka

Gotovo svi Bootstrap dodaci mogu se omogućiti i konfigurirati samo putem HTML-a s atributima podataka (naš preferirani način korištenja JavaScript funkcionalnosti). Pazite da koristite samo jedan skup atributa podataka na jednom elementu (npr. ne možete pokrenuti opis alata i modal s istog gumba.)

Selektori

Trenutačno za postavljanje upita DOM elementima koristimo izvorne metode querySelectori querySelectorAllzbog performansi, tako da morate koristiti važeće selektore . Ako koristite posebne selektore, na primjer: collapse:Examplesvakako ih pobjegnite.

Događaji

Bootstrap pruža prilagođene događaje za većinu jedinstvenih radnji dodataka. Općenito, oni dolaze u obliku infinitiva i participa prošlosti - gdje se infinitiv (npr. show) pokreće na početku događaja, a njegov oblik participa prošlosti (npr. shown) se pokreće nakon završetka radnje.

Svi infinitivni događaji pružaju preventDefault()funkcionalnost. Ovo pruža mogućnost zaustavljanja izvršenja radnje prije nego što započne. Vraćanje false iz rukovatelja događajem također će automatski pozvati preventDefault().

var myModal = document.getElementById('myModal')

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

jQuery događaji

Bootstrap će otkriti jQuery ako jQueryje prisutan u windowobjektu, a data-bs-no-jqueryatribut nije postavljen na <body>. Ako se pronađe jQuery, Bootstrap će emitirati događaje zahvaljujući jQuery sustavu događaja. Dakle, ako želite slušati Bootstrapove događaje, morat ćete koristiti jQuery metode ( .on, .one) umjesto addEventListener.

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

Programski API

Svi konstruktori prihvaćaju neobavezni objekt opcija ili ništa (što pokreće dodatak sa svojim zadanim ponašanjem):

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

Ako želite dobiti određenu instancu dodatka, svaki dodatak izlaže getInstancemetodu. Kako biste ga dohvatili izravno iz elementa, učinite ovo: bootstrap.Popover.getInstance(myPopoverEl).

CSS selektori u konstruktorima

Također možete koristiti CSS birač kao prvi argument umjesto DOM elementa za inicijalizaciju dodatka. Trenutačno se element za dodatak pronalazi querySelectormetodom jer naši dodaci podržavaju samo jedan element.

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

Asinkrone funkcije i prijelazi

Sve programske API metode su asinkrone i vraćaju se pozivatelju kada prijelaz započne, ali prije nego što završi .

Kako biste izvršili radnju nakon završetka prijelaza, možete slušati odgovarajući događaj.

var myCollapseEl = document.getElementById('myCollapse')

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

Osim toga, poziv metode na prijelaznoj komponenti bit će zanemaren .

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 !!

Zadane postavke

Zadane postavke dodatka možete promijeniti izmjenom Constructor.Defaultobjekta dodatka:

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

Nema sukoba (samo ako koristite jQuery)

Ponekad je potrebno koristiti Bootstrap dodatke s drugim UI okvirima. U tim okolnostima povremeno može doći do sukoba prostora imena. Ako se to dogodi, možete pozvati .noConflictdodatak kojem želite vratiti vrijednost.

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

Brojevi verzija

Verziji svakog Bootstrapovog dodatka može se pristupiti putem VERSIONsvojstva konstruktora dodatka. Na primjer, za dodatak s opisom alata:

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

Nema posebnih zamjena kada je JavaScript onemogućen

Bootstrapovi dodaci ne vraćaju se osobito graciozno kada je JavaScript onemogućen. Ako vam je stalo do korisničkog iskustva u ovom slučaju, upotrijebite <noscript>kako biste svojim korisnicima objasnili situaciju (i kako ponovno omogućiti JavaScript) i/ili dodajte vlastite prilagođene zamjene.

Knjižnice trećih strana

Bootstrap službeno ne podržava JavaScript biblioteke trećih strana kao što su Prototype ili jQuery UI. Unatoč .noConflictdogađajima u prostoru imena, može doći do problema s kompatibilnošću koje morate sami riješiti.

Sredstvo za dezinfekciju

Tooltips i Popovers koriste naš ugrađeni sanitizer za čišćenje opcija koje prihvaćaju HTML.

Zadana allowListvrijednost je sljedeća:

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: []
}

Ako želite dodati nove vrijednosti ovoj zadanoj postavci allowList, možete učiniti sljedeće:

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)

Ako želite zaobići naš sanitizer jer više volite koristiti namjensku biblioteku, na primjer DOMPurify , trebali biste učiniti sljedeće:

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