JavaScript
Oživte Bootstrap pomocí našich volitelných pluginů JavaScript. Přečtěte si o každém pluginu, našich možnostech datového a programového rozhraní API a dalších.
Individuální nebo sestavené
Pluginy mohou být zahrnuty jednotlivě (pomocí Bootstrap's individual js/dist/*.js
), nebo všechny najednou pomocí bootstrap.js
nebo minifikované bootstrap.min.js
(nezahrnujte obojí).
Pokud používáte bundler (Webpack, Rollup…), můžete použít /js/dist/*.js
soubory, které jsou připraveny na UMD.
Použití Bootstrap jako modulu
Poskytujeme verzi Bootstrapu vytvořenou jako ESM
( bootstrap.esm.js
a bootstrap.esm.min.js
), která vám umožňuje používat Bootstrap jako modul ve vašem prohlížeči, pokud to vaše cílené prohlížeče podporují .
<script type="module">
import { Toast } from 'bootstrap.esm.min.js'
Array.from(document.querySelectorAll('.toast'))
.forEach(toastNode => new Toast(toastNode))
</script>
Nekompatibilní pluginy
Kvůli omezením prohlížeče nelze některé naše pluginy, jmenovitě Dropdown, Tooltip a Popover pluginy, použít ve <script>
značce s module
typem, protože závisí na Popperu. Další informace o problému naleznete zde .
Závislosti
Některé pluginy a CSS komponenty závisí na jiných pluginech. Pokud zahrnete pluginy jednotlivě, nezapomeňte zkontrolovat tyto závislosti v dokumentech.
Naše rozbalovací nabídky, vyskakovací okna a popisky také závisí na Popperu .
Stále chcete používat jQuery? Je to možné!
Bootstrap 5 je navržen pro použití bez jQuery, ale stále je možné používat naše komponenty s jQuery. Pokud Bootstrap detekuje jQuery
v window
objektu , přidá všechny naše komponenty do systému zásuvných modulů jQuery; to znamená, že budete moci $('[data-bs-toggle="tooltip"]').tooltip()
povolit popisky. Totéž platí pro naše další komponenty.
Atributy dat
Téměř všechny zásuvné moduly Bootstrap lze aktivovat a konfigurovat pouze prostřednictvím HTML s datovými atributy (náš preferovaný způsob používání funkcí JavaScriptu). Ujistěte se, že pro jeden prvek používáte pouze jednu sadu atributů dat (např. nemůžete spustit popisek a modal ze stejného tlačítka.)
Selektory
V současné době používáme k dotazování prvků DOM nativní metody querySelector
a querySelectorAll
z důvodu výkonu, takže musíte použít platné selektory . Pokud například používáte speciální selektory: collapse:Example
nezapomeňte jim uniknout.
Události
Bootstrap poskytuje vlastní události pro většinu jedinečných akcí pluginů. Obecně platí, že jsou ve formě infinitivu a minulého příčestí – kde infinitiv (např. show
) je spuštěn na začátku události a jeho minulý tvar participia (např. shown
) je spuštěn při dokončení akce.
Všechny infinitivní události poskytují preventDefault()
funkčnost. To poskytuje možnost zastavit provádění akce před jejím zahájením. Vrácení false z obsluhy události také automaticky zavolá preventDefault()
.
var myModal = document.getElementById('myModal')
myModal.addEventListener('show.bs.modal', function (event) {
if (!data) {
return event.preventDefault() // stops modal from being shown
}
})
události jQuery
Bootstrap detekuje jQuery, pokud jQuery
je v window
objektu přítomen a není nastaven žádný data-bs-no-jquery
atribut na <body>
. Pokud je jQuery nalezen, Bootstrap bude vydávat události díky systému událostí jQuery. Pokud tedy chcete poslouchat události Bootstrapu, budete muset použít metody jQuery ( .on
, .one
) místo addEventListener
.
$('#myTab a').on('shown.bs.tab', function () {
// do something...
})
Programové rozhraní API
Všechny konstruktory přijímají volitelný objekt voleb nebo nic (což spouští plugin s jeho výchozím chováním):
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
Pokud chcete získat konkrétní instanci pluginu, každý plugin odhaluje getInstance
metodu. Chcete-li jej načíst přímo z prvku, postupujte takto: bootstrap.Popover.getInstance(myPopoverEl)
.
CSS selektory v konstruktorech
Můžete také použít selektor CSS jako první argument místo prvku DOM k inicializaci pluginu. V současné době je prvek pro plugin nalezen querySelector
metodou, protože naše pluginy podporují pouze jeden prvek.
var modal = new bootstrap.Modal('#myModal')
var dropdown = new bootstrap.Dropdown('[data-bs-toggle="dropdown"]')
Asynchronní funkce a přechody
Všechny metody programového rozhraní API jsou asynchronní a vracejí se k volajícímu, jakmile je přechod zahájen, ale před jeho ukončením .
Chcete-li po dokončení přechodu provést akci, můžete si poslechnout odpovídající událost.
var myCollapseEl = document.getElementById('myCollapse')
myCollapseEl.addEventListener('shown.bs.collapse', function (event) {
// Action to execute once the collapsible area is expanded
})
Kromě toho bude ignorováno volání metody na přechodové komponentě .
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 !!
Výchozí nastavení
Výchozí nastavení pluginu můžete změnit úpravou objektu pluginu Constructor.Default
:
// changes default for the modal plugin's `keyboard` option to false
bootstrap.Modal.Default.keyboard = false
Žádný konflikt (pouze pokud používáte jQuery)
Někdy je nutné použít Bootstrap pluginy s jinými UI frameworky. Za těchto okolností může občas dojít ke kolizím oboru názvů. Pokud k tomu dojde, můžete zavolat .noConflict
na plugin, jehož hodnotu chcete vrátit.
var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality
Čísla verzí
Verze každého modulu Bootstrap je přístupná prostřednictvím VERSION
vlastnosti konstruktoru pluginu. Například pro plugin tooltip:
bootstrap.Tooltip.VERSION // => "5.1.3"
Při deaktivaci JavaScriptu nedochází k žádným zvláštním záložním řešením
Pluginy Bootstrapu neustupují nijak zvlášť elegantně, když je zakázán JavaScript. Pokud vám v tomto případě záleží na uživatelském dojmu, použijte <noscript>
k vysvětlení situace (a jak znovu povolit JavaScript) svým uživatelům a/nebo přidejte své vlastní záložní.
Knihovny třetích stran
Bootstrap oficiálně nepodporuje JavaScriptové knihovny třetích stran, jako je Prototype nebo jQuery UI. Navzdory .noConflict
událostem se jmenným prostorem se mohou vyskytnout problémy s kompatibilitou, které budete muset vyřešit sami.
Sanitizer
Popisky a vyskakovací okna používají náš vestavěný dezinfekční prostředek k dezinfekci možností, které přijímají HTML.
Výchozí allowList
hodnota je následující:
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: []
}
Pokud chcete k tomuto výchozímu nastavení přidat nové hodnoty allowList
, můžete provést následující:
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)
Pokud chcete obejít náš dezinfekční prostředek, protože dáváte přednost použití vyhrazené knihovny, například DOMPurify , měli byste udělat následující:
var yourTooltipEl = document.getElementById('yourTooltip')
var tooltip = new bootstrap.Tooltip(yourTooltipEl, {
sanitizeFn: function (content) {
return DOMPurify.sanitize(content)
}
})