JavaScript
Bréngt Bootstrap zum Liewen mat eisen optionalen JavaScript Plugins. Léiert iwwer all Plugin, eis Daten a programmatesch API Optiounen, a méi.
Individuell oder zesummegesat
Plugins kënnen individuell abegraff ginn (benotzt dem Bootstrap säin individuellen js/dist/*.js
), oder all gläichzäiteg benotzt bootstrap.js
oder déi minifizéiert bootstrap.min.js
(net béid enthalen).
Wann Dir e Bundler benotzt (Webpack, Rollup ...), kënnt Dir /js/dist/*.js
Dateien benotzen déi UMD prett sinn.
Benotzt Bootstrap als Modul
Mir bidden eng Versioun vu Bootstrap gebaut als ESM
( bootstrap.esm.js
an bootstrap.esm.min.js
) déi Iech erlaabt Bootstrap als Modul an Ärem Browser ze benotzen, wann Är gezielte Browser et ënnerstëtzen .
<script type="module">
import { Toast } from 'bootstrap.esm.min.js'
Array.from(document.querySelectorAll('.toast'))
.forEach(toastNode => new Toast(toastNode))
</script>
Inkompatibel Plugins
Wéinst Browserbeschränkungen kënnen e puer vun eise Plugins, nämlech Dropdown, Tooltip a Popover Plugins, net an engem <script>
Tag mat module
Typ benotzt ginn, well se vum Popper ofhängeg sinn. Fir méi Informatiounen iwwert d'Thema gesinn hei .
Ofhängegkeeten
E puer Plugins an CSS Komponenten hänke vun anere Plugins of. Wann Dir Plugins individuell enthält, gitt sécher fir dës Ofhängegkeeten an den Dokumenter ze kontrolléieren.
Eis Dropdowns, Popovers an Tooltips hänkt och vum Popper of .
Wëllt Dir ëmmer nach jQuery benotzen? Et ass méiglech!
Bootstrap 5 ass entwéckelt fir ouni jQuery benotzt ze ginn, awer et ass ëmmer nach méiglech eis Komponente mat jQuery ze benotzen. Wann Bootstrap jQuery
am window
Objet erkennt, füügt et all eis Komponenten am jQuery's Plugin System; dat heescht datt Dir fäeg ass $('[data-bs-toggle="tooltip"]').tooltip()
Tooltip z'aktivéieren. Dat selwecht gëllt fir eis aner Komponenten.
Daten Attributer
Bal all Bootstrap Plugins kënnen duerch HTML eleng mat Datenattributer aktivéiert a konfiguréiert ginn (eis léifste Manéier fir JavaScript Funktionalitéit ze benotzen). Gitt sécher datt Dir nëmmen e Set vun Dateattributer op engem eenzegen Element benotzt (zB Dir kënnt net e Tooltip a Modal vum selwechte Knäppchen ausléisen.)
Wieler
Am Moment fir DOM Elementer ze froen benotze mir déi gebierteg Methoden querySelector
a querySelectorAll
fir Leeschtungsgrënn, also musst Dir valabel Selektor benotzen . Wann Dir speziell selectors benotzt, zum Beispill: collapse:Example
ginn sécher hinnen ze flüchten.
Evenementer
Bootstrap bitt personaliséiert Eventer fir déi meescht Plugins eenzegaarteg Aktiounen. Allgemeng kommen dës an enger Infinitiv- a Vergaangenheetsform - wou den Infinitiv (ex. show
) am Ufank vun engem Event ausgeléist gëtt, a seng Partizipform (ex. shown
) ausgeléist gëtt beim Ofschloss vun enger Handlung.
All infinitiv Eventer bidden preventDefault()
Funktionalitéit. Dëst bitt d'Fäegkeet d'Ausféierung vun enger Aktioun ze stoppen ier se ufänkt. Falsch zréckginn vun engem Event Handler wäert och automatesch ruffen preventDefault()
.
var myModal = document.getElementById('myModal')
myModal.addEventListener('show.bs.modal', function (event) {
if (!data) {
return event.preventDefault() // stops modal from being shown
}
})
jQuery Evenementer
Bootstrap erkennt jQuery wann jQuery
et am window
Objet präsent ass an et gëtt keen data-bs-no-jquery
Attribut op <body>
. Wann jQuery fonnt gëtt, wäert Bootstrap Eventer emittéieren dank dem jQuery Event System. Also wann Dir op Bootstrap d'Evenementer lauschtere wëllt, musst Dir d'jQuery Methoden benotzen ( .on
, .one
) amplaz addEventListener
.
$('#myTab a').on('shown.bs.tab', function () {
// do something...
})
Programmatesch API
All Konstruktoren akzeptéieren en optionalen Optiounsobjekt oder näischt (wat e Plugin mat sengem Standardverhalen initiéiert):
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
Wann Dir e bestëmmte Plugin-Instanz wëllt kréien, weist all Plugin eng getInstance
Method aus. Fir et direkt vun engem Element ze recuperéieren, maacht dat bootstrap.Popover.getInstance(myPopoverEl)
:.
CSS Selektor bei Konstruktoren
Dir kënnt och e CSS Selector als éischt Argument benotzen anstatt en DOM Element fir de Plugin ze initialiséieren. De Moment gëtt d'Element fir de Plugin vun der querySelector
Method fonnt, well eis Plugins nëmmen en eenzegt Element ënnerstëtzen.
var modal = new bootstrap.Modal('#myModal')
var dropdown = new bootstrap.Dropdown('[data-bs-toggle="dropdown"]')
Asynchrone Funktiounen an Iwwergäng
All programmatesch API Methoden sinn asynchron a ginn zréck an den Uruffer wann den Iwwergang ugefaang ass awer ier en eriwwer ass .
Fir eng Handlung auszeféieren nodeems den Iwwergank fäerdeg ass, kënnt Dir op dat entspriechend Event lauschteren.
var myCollapseEl = document.getElementById('myCollapse')
myCollapseEl.addEventListener('shown.bs.collapse', function (event) {
// Action to execute once the collapsible area is expanded
})
Zousätzlech gëtt e Methodruff op eng Iwwergangskomponent ignoréiert .
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 !!
Default Astellunge
Dir kënnt d'Standardastellunge fir e Plugin änneren andeems Dir den Constructor.Default
Objet vum Plugin ännert:
// changes default for the modal plugin's `keyboard` option to false
bootstrap.Modal.Default.keyboard = false
Kee Konflikt (nëmme wann Dir jQuery benotzt)
Heiansdo ass et néideg Bootstrap Plugins mat anere UI Kaderen ze benotzen. An dësen Ëmstänn kënnen Nummraumkollisiounen heiansdo optrieden. Wann dat passéiert, kënnt Dir .noConflict
de Plugin uruffen, deen Dir wëllt de Wäert zrécksetzen.
var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality
Versioun Zuelen
D'Versioun vun all Bootstrap's Plugins kann iwwer d' VERSION
Eegeschafte vum Konstruktor vum Plugin zougänglech sinn. Zum Beispill, fir den Tooltip Plugin:
bootstrap.Tooltip.VERSION // => "5.1.3"
Keng speziell Réckfall wann JavaScript behënnert ass
Bootstrap's Plugins falen net besonnesch graziéis zréck wann JavaScript deaktivéiert ass. Wann Dir Iech ëm d'Benotzererfarung an dësem Fall këmmert, benotzt <noscript>
fir d'Situatioun z'erklären (a wéi Dir JavaScript erëm aktivéiert) fir Är Benotzer, an / oder Är eege personaliséiert Réckfall derbäi.
Drëtt Partei Bibliothéiken
Bootstrap ënnerstëtzt net offiziell Drëtt Partei JavaScript Bibliothéike wéi Prototyp oder jQuery UI. Trotz .noConflict
an Namespaced Eventer kënnen et Kompatibilitéitsproblemer sinn déi Dir eleng muss fixéieren.
Sanitizer
Tooltips a Popovers benotzen eisen agebaute Sanitizer fir Optiounen ze desinfizéieren déi HTML akzeptéieren.
De Standardwäert allowList
ass déi folgend:
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: []
}
Wann Dir nei Wäerter zu dësem Standard addéiere wëllt, allowList
kënnt Dir déi folgend maachen:
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)
Wann Dir eise Sanitizer ëmgoe wëllt well Dir léiwer eng speziell Bibliothéik benotze wëllt, zum Beispill DOMPurify , sollt Dir déi folgend maachen:
var yourTooltipEl = document.getElementById('yourTooltip')
var tooltip = new bootstrap.Tooltip(yourTooltipEl, {
sanitizeFn: function (content) {
return DOMPurify.sanitize(content)
}
})