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.js
ili umanjenog bootstrap.min.js
(nemojte uključivati oboje).
Ako koristite bundler (Webpack, Rollup…), možete koristiti /js/dist/*.js
datoteke koje su spremne za UMD.
Korištenje Bootstrapa kao modula
Nudimo verziju Bootstrapa izgrađenu kao ESM
( bootstrap.esm.js
i 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 module
tipom 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 jQuery
u window
objektu , 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 querySelector
i querySelectorAll
zbog performansi, tako da morate koristiti važeće selektore . Ako koristite posebne selektore, na primjer: collapse:Example
svakako 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 jQuery
je prisutan u window
objektu, a data-bs-no-jquery
atribut 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 getInstance
metodu. 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 querySelector
metodom 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.Default
objekta 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 .noConflict
dodatak 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 VERSION
svojstva konstruktora dodatka. Na primjer, za dodatak s opisom alata:
bootstrap.Tooltip.VERSION // => "5.1.3"
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č .noConflict
događ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 allowList
vrijednost 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)
}
})