جاڤاسکڕێپت
بە پێوەکراوەکانی جاڤاسکڕێپتی ئیختیاریمان Bootstrap بە ژیان بهێنە. دەربارەی هەر پێوەکراوێک، داتا و هەڵبژاردەکانی API بەرنامەیی و زۆر شتی تر بزانە.
تاکەکەسی یان کۆکراوە
دەتوانرێت پێوەکراوەکان بە تاک (بە بەکارهێنانی تاکەکەسی Bootstrap js/dist/*.js
) جێگیر بکرێن، یان هەموویان بە یەکجار بە بەکارهێنانی bootstrap.js
یان بچووککراو bootstrap.min.js
(هەردووکیان لەخۆ مەگرن).
ئەگەر باندلەرێک بەکاربهێنیت (Webpack, Rollup...)، دەتوانیت ئەو /js/dist/*.js
فایلانە بەکاربهێنیت کە UMD ئامادەن.
بەکارهێنانی Bootstrap وەک مۆدیولێک
ئێمە وەشانی Bootstrap دابین دەکەین کە وەک ESM
( 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 ناتوانرێت لە تاگێکدا بەکاربهێنرێت کە <script>
جۆری هەبێت module
چونکە پشت بە Popper دەبەستن. بۆ زانیاری زیاتر لەسەر ئەو پرسە سەیری لێرە بکە .
وابەستەییەکان
هەندێک لە پێوەکراوەکان و پێکهاتەکانی CSS پشت بە پێوەکراوەکانی تر دەبەستن. ئەگەر پێوەکراوەکان بە تاک بە تاک جێگیر دەکەیت، دڵنیابە لە پشکنینی ئەم وابەستەییانە لە دۆکیومێنتەکاندا.
هەروەها دابەزینەکانمان، پۆپۆڤەرەکان و ئاڵتیپەکانمان پشت بە پۆپەر دەبەستن .
هێشتا دەتەوێت jQuery بەکاربهێنیت؟ ئهوه ئهگونجێت!
Bootstrap 5 بە شێوەیەک دروست کراوە کە بەبێ jQuery بەکاربهێنرێت، بەڵام هێشتا دەتوانرێت پێکهاتەکانمان لەگەڵ jQuery بەکاربهێنرێت. ئەگەر Bootstrap jQuery
لە window
ئۆبجێکتیەکەدا دەستنیشان بکات هەموو پێکهاتەکانمان زیاد دەکات لە سیستەمی پێوەکراوەکانی jQuery؛ ئەمەش واتە دەتوانیت بیکەیت $('[data-bs-toggle="tooltip"]').tooltip()
بۆ چالاککردنی ئامرازەکان. هەروەها بۆ پێکهاتەکانی تریشمان.
تایبەتمەندیەکانی داتا
نزیکەی هەموو پێوەکراوەکانی Bootstrap دەتوانرێت چالاک بکرێت و ڕێکبخرێت تەنها لە ڕێگەی HTML بە تایبەتمەندی داتا (شێوازی پەسەندکراوی ئێمە بۆ بەکارهێنانی کارایی جاڤاسکڕێپت). دڵنیابە کە تەنها یەک کۆمەڵە تایبەتمەندی داتا لەسەر یەک توخم بەکاردەهێنیت (بۆ نموونە، ناتوانیت ئامۆژگاری و مۆداڵی لە هەمان دوگمەوە دەستپێبکەیت.)
هەڵبژێرەران
لە ئێستادا بۆ پرسیارکردن لە توخمەکانی DOM ئێمە شێوازە ڕەسەنەکان بەکاردەهێنین querySelector
و querySelectorAll
بۆ هۆکاری کارایی، بۆیە دەبێت هەڵبژێرەری دروست بەکاربهێنیت . ئەگەر هەڵبژێرەری تایبەت بەکاردەهێنیت، بۆ نموونە: collapse:Example
دڵنیابە لەوەی کە لێیان ڕزگارت دەبێت.
ڕووداوەکان
بووتستراپ ڕووداوە تایبەتەکان بۆ زۆربەی کردارە ناوازەکانی پێوەکراوەکان دابین دەکات. بەگشتی ئەمانە بە شێوەی بێکۆتایی و بەشێکی ڕابردوو دێن - کە بێکۆتایی (ex. show
) لە سەرەتای ڕووداوێکدا دەستپێدەکات، و فۆڕمی بەشە ڕابردووەکەی (ex. shown
) لە کاتی تەواوبوونی کردارێکدا دەستپێدەکات.
هەموو ڕووداوە بێکۆتاییەکان preventDefault()
کارایی دابین دەکەن. ئەمەش توانای وەستاندنی جێبەجێکردنی کردارێک پێش دەستپێکردنی دەدات. هەروەها گەڕانەوەی false لە مامەڵەکارێکی ڕووداوەوە بە شێوەیەکی ئۆتۆماتیکی بانگ 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 دەدۆزێتەوە ئەگەر jQuery
لە window
ئۆبجێکتیەکەدا هەبێت و هیچ data-bs-no-jquery
تایبەتمەندییەک لەسەر <body>
. ئەگەر jQuery بدۆزرێتەوە، Bootstrap ڕووداوەکان دەردەدات بەهۆی سیستەمی ڕووداوەکانی jQuery. کەواتە ئەگەر بتەوێت گوێ لە ڕووداوەکانی Bootstrap بگرێت، دەبێت لەبری , شێوازەکانی jQuery ( .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 لە بنیاتنانەکاندا
هەروەها دەتوانیت هەڵبژێرەری CSS وەک یەکەم ئارگومێنت بەکاربهێنیت لەبری توخمێکی DOM بۆ دەستپێکردنی پێوەکراوەکە. لە ئێستادا توخمەکە بۆ پێوەکراوەکە بە 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 بەکاربهێنیت)
هەندێک جار پێویستە پێوەکراوەکانی Bootstrap لەگەڵ چوارچێوەی UI ی تر بەکاربهێنرێت. لەم بارودۆخانەدا، ناوبەناو دەتوانێت پێکدادانی ناوچەی ناوەکان ڕووبدات. ئەگەر ئەمە ڕوویدا، دەتوانیت بانگی .noConflict
ئەو پێوەکراوە بکەیت کە دەتەوێت بەهاکەی بگەڕێنیتەوە.
var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality
ژمارەکانی وەشانی
دەتوانرێت لە ڕێگەی VERSION
تایبەتمەندی بنیاتنەری پێوەکراوەکەوە دەست بە وەشانی هەریەک لە پێوەکراوەکانی Bootstrap بگات. بۆ نموونە بۆ پێوەکراوەکەی tooltip:
bootstrap.Tooltip.VERSION // => "5.0.2"
هیچ فۆڵباکێکی تایبەت نییە کاتێک جاڤاسکڕێپت لەکارخراوە
پێوەکراوەکانی Bootstrap بە تایبەتی بە ڕەوشتەوە ناگەڕێنەوە کاتێک جاڤاسکڕێپت لەکاردەخرێت. ئەگەر لەم حاڵەتەدا گرنگی بە ئەزموونی بەکارهێنەر دەدەیت، بەکاری بهێنە <noscript>
بۆ ڕوونکردنەوەی دۆخەکە (و چۆن جاڤاسکڕێپت چالاک بکەیتەوە) بۆ بەکارهێنەرانت، و/یان زیادکردنی پاشەکشەی تایبەت بە خۆت.
کتێبخانەکانی لایەنی سێیەم
بووتستراپ بە فەرمی پشتگیری لە کتێبخانەکانی جاڤاسکڕێپتی لایەنی سێیەم وەک Prototype یان jQuery UI ناکات. سەرەڕای .noConflict
ڕووداوەکان و ناوەکان، لەوانەیە کێشەی گونجان هەبن کە پێویستە لەسەر خۆت چارەسەریان بکەیت.
پاککەرەوە
Tooltips و 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)
}
})