JavaScript
Манай нэмэлт JavaScript залгаасуудаар Bootstrap-г амилуулаарай. Залгаас тус бүр, манай өгөгдөл болон программын API сонголтууд болон бусад зүйлсийн талаар мэдэж аваарай.
Ганцаарчилсан эсвэл эмхэтгэсэн
Залгаасуудыг тус тусад нь (Bootstrap-ийн individual -ийг ашиглан js/dist/*.js
) эсвэл бүгдийг нь нэг дор bootstrap.js
эсвэл жижигрүүлсэн bootstrap.min.js
(хоёуланг нь оруулахгүй) ашиглаж болно.
Хэрэв та багцлагч (Webpack, Rollup...) ашигладаг /js/dist/*.js
бол UMD бэлэн файлуудыг ашиглаж болно.
Bootstrap-ийг модуль болгон ашиглах
ESM
Бид Bootstrap-ийн ( bootstrap.esm.js
ба ) хэлбэрээр бүтээгдсэн хувилбарыг санал болгож байгаа бөгөөд хэрэв таны зорилтот хөтчүүд үүнийг дэмждэгbootstrap.esm.min.js
бол Bootstrap-ийг хөтчийнхөө модуль болгон ашиглах боломжтой .
<script type="module">
import { Toast } from 'bootstrap.esm.min.js'
Array.from(document.querySelectorAll('.toast'))
.forEach(toastNode => new Toast(toastNode))
</script>
Тохиромжгүй залгаасууд
Хөтөчийн хязгаарлалтын улмаас манай зарим залгаасууд, тухайлбал Dropdown, Tooltip болон Popover залгаасууд нь Popper-ээс хамаардаг тул төрөлтэй <script>
шошгонд ашиглах боломжгүй. module
Асуудлын талаарх дэлгэрэнгүй мэдээллийг эндээс үзнэ үү .
Хамаарал
Зарим залгаасууд болон CSS бүрэлдэхүүн хэсгүүд нь бусад залгаасуудаас хамаардаг. Хэрэв та залгаасуудыг тусад нь оруулбал эдгээр хамаарлыг баримтаас шалгана уу.
Бидний унадаг цэс, поповер болон зөвлөмжүүд нь Попперээс хамаарна .
Одоо ч гэсэн jQuery ашиглахыг хүсч байна уу? Энэ боломжтой!
Bootstrap 5 нь jQuery-гүйгээр ашиглахад зориулагдсан боловч jQuery-тэй манай бүрэлдэхүүн хэсгүүдийг ашиглах боломжтой хэвээр байна. Хэрэв Bootstrap объектыг илрүүлбэл jQuery jQuery
-window
ийн залгаас системд бидний бүх бүрэлдэхүүн хэсгүүдийг нэмнэ; Энэ нь та $('[data-bs-toggle="tooltip"]').tooltip()
зөвлөмжийг идэвхжүүлэх боломжтой болно гэсэн үг юм. Манай бусад бүрэлдэхүүн хэсгүүдэд мөн адил хамаарна.
Өгөгдлийн шинж чанарууд
Бараг бүх Bootstrap залгаасуудыг зөвхөн өгөгдлийн шинж чанаруудтай (бидний JavaScript функцийг ашиглах илүүд үздэг арга) HTML-ээр дамжуулан идэвхжүүлж, тохируулах боломжтой. Нэг элемент дээр зөвхөн нэг багц өгөгдлийн шинж чанарыг ашиглахаа мартуузай (жишээ нь, та нэг товчлуураас хэрэгслийн зөвлөмж болон модальыг идэвхжүүлэх боломжгүй).
Сонгогчид
Одоогоор бид DOM элементүүдийг асуухын тулд үндсэн аргуудыг ашиглаж байгаа querySelector
бөгөөд querySelectorAll
гүйцэтгэлийн шалтгаанаар та хүчинтэй сонгогч ашиглах хэрэгтэй . Хэрэв та тусгай сонгогч ашигладаг бол, жишээлбэл: collapse:Example
тэднээс зайлсхийхээ мартуузай.
Үйл явдал
Bootstrap нь ихэнх залгаасуудын өвөрмөц үйлдлүүдийн захиалгат үйл явдлуудыг хангадаг. show
Ерөнхийдөө эдгээр нь үйл явдлын эхэнд инфинитив (жишээ нь) өдөөгддөг ба өнгөрсөн үеийн хэлбэр (жишээ shown
нь) нь үйлдлийг дуусгахад өдөөгддөг - инфинитив болон өнгөрсөн үеийн хэлбэрээр ирдэг.
Бүх инфинитив үйл явдал нь preventDefault()
функцийг хангадаг. Энэ нь үйлдлийг эхлэхээс өмнө гүйцэтгэх ажиллагааг зогсоох боломжийг олгодог. Үйл явдал зохицуулагчаас худал буцаах нь мөн автоматаар дуудагдана preventDefault()
.
var myModal = document.getElementById('myModal')
myModal.addEventListener('show.bs.modal', function (event) {
if (!data) {
return event.preventDefault() // stops modal from being shown
}
})
jQuery үйл явдлууд
Bootstrap нь jQuery
тухайн объект дээр байгаа атрибут window
байхгүй бол jQuery-г илрүүлэх болно . Хэрэв jQuery олдвол Bootstrap нь jQuery-ийн үйл явдлын системийн ачаар үйл явдлуудыг гаргах болно. Тиймээс хэрэв та Bootstrap-ийн үйл явдлуудыг сонсохыг хүсвэл , оронд jQuery аргуудыг ( , ) ашиглах хэрэгтэй болно .data-bs-no-jquery
<body>
.on
.one
addEventListener
$('#myTab a').on('shown.bs.tab', function () {
// do something...
})
Програмчлалын API
Бүх бүтээгчид нэмэлт сонголтын объектыг хүлээн авдаг эсвэл юу ч биш (энэ нь анхдагч үйлдэлтэй залгаасыг эхлүүлдэг):
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
Хэрэв та тодорхой нэг залгаасын жишээ авахыг хүсвэл залгаас бүр getInstance
аргыг илчилнэ. Үүнийг элементээс шууд татаж авахын тулд дараахыг хийнэ үү: bootstrap.Popover.getInstance(myPopoverEl)
.
Бүтээгч дэх CSS сонгогчид
Та залгаасыг эхлүүлэхийн тулд DOM элементийн оронд CSS сонгогчийг эхний аргумент болгон ашиглаж болно. Одоогоор залгаасын элементийг энэ querySelector
аргаар олж байна, учир нь манай залгаасууд зөвхөн нэг элементийг дэмждэг.
var modal = new bootstrap.Modal('#myModal')
var dropdown = new bootstrap.Dropdown('[data-bs-toggle="dropdown"]')
Асинхрон функцууд ба шилжилтүүд
Бүх программын API аргууд нь асинхрон бөгөөд шилжилт эхлэхээс өмнө дуусмагц дуудагч руу буцдаг .
Шилжилт дууссаны дараа үйлдлийг гүйцэтгэхийн тулд та холбогдох үйл явдлыг сонсож болно.
var myCollapseEl = document.getElementById('myCollapse')
myCollapseEl.addEventListener('shown.bs.collapse', function (event) {
// Action to execute once the collapsible area is expanded
})
Түүнчлэн шилжилтийн бүрэлдэхүүн хэсэг дээрх аргын дуудлагыг үл тоомсорлох болно.
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 !!
Өгөгдмөл тохиргоо
Constructor.Default
Та залгаасын объектыг өөрчлөх замаар залгаасын үндсэн тохиргоог өөрчилж болно :
// changes default for the modal plugin's `keyboard` option to false
bootstrap.Modal.Default.keyboard = false
Ямар ч зөрчил байхгүй (хэрэв та jQuery ашигладаг бол)
Заримдаа бусад UI хүрээтэй Bootstrap залгаасуудыг ашиглах шаардлагатай болдог. Ийм нөхцөлд нэрийн орон зайн зөрчилдөөн хааяа тохиолдож болно. Хэрэв ийм зүйл тохиолдвол та .noConflict
утгыг буцаахыг хүссэн залгаас руу залгаж болно.
var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality
Хувилбарын дугаарууд
VERSION
Bootstrap-ийн залгаас бүрийн хувилбарт залгаасын үүсгэгчийн өмчөөр хандаж болно . Жишээлбэл, зааврын нэмэлт өргөтгөлийн хувьд:
bootstrap.Tooltip.VERSION // => "5.0.2"
JavaScript-г идэвхгүй болгосон үед тусгай нөөц байхгүй
JavaScript идэвхгүй болсон үед Bootstrap-ийн залгаасууд тийм ч сайн унадаггүй. Хэрэв та энэ тохиолдолд хэрэглэгчийн туршлагад санаа тавьж байгаа бол хэрэглэгчдэдээ <noscript>
нөхцөл байдлыг тайлбарлах (мөн JavaScript-г хэрхэн дахин идэвхжүүлэх) болон/эсвэл өөрийн захиалгат өгөгдлүүдийг нэмнэ үү.
Гуравдагч талын номын сангууд
Bootstrap нь Prototype эсвэл jQuery UI зэрэг гуравдагч талын JavaScript сангуудыг албан ёсоор дэмждэггүй . Үйл явдлууд болон нэрийн зайтай байсан ч .noConflict
та өөрөө засах шаардлагатай нийцтэй байдлын асуудал гарч болзошгүй.
Ариутгагч
Зөвлөмжүүд болон Popovers нь HTML-г хүлээн зөвшөөрдөг сонголтуудыг ариутгахын тулд бидний суулгасан ариутгагчийг ашигладаг.
Өгөгдмөл allowList
утга нь дараах байна:
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: []
}
Хэрэв та энэ өгөгдмөл утгад шинэ утгыг нэмэхийг хүсвэл allowList
дараах зүйлсийг хийж болно:
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)
Хэрэв та тусгай номын сан, жишээ нь DOMPurify ашиглахыг илүүд үздэг тул манай ариутгагчийг тойрч гарахыг хүсвэл дараах зүйлийг хийх хэрэгтэй.
var yourTooltipEl = document.getElementById('yourTooltip')
var tooltip = new bootstrap.Tooltip(yourTooltipEl, {
sanitizeFn: function (content) {
return DOMPurify.sanitize(content)
}
})