ຂ້າມໄປຫາເນື້ອຫາຕົ້ນຕໍ ຂ້າມໄປຫາການນຳທາງເອກະສານ
in English

JavaScript

ເຮັດໃຫ້ Bootstrap ມີຊີວິດຊີວາດ້ວຍ plugins JavaScript ທາງເລືອກຂອງພວກເຮົາ. ຮຽນຮູ້ກ່ຽວກັບແຕ່ລະປລັກອິນ, ຂໍ້ມູນຂອງພວກເຮົາ ແລະຕົວເລືອກ API ແບບໂປຣແກຣມ, ແລະອື່ນໆອີກ.

ສ່ວນບຸກຄົນຫຼືລວບລວມ

ປັ໊ກອິນສາມາດຖືກລວມເຂົ້າເປັນສ່ວນບຸກຄົນ (ໂດຍນໍາໃຊ້ສ່ວນບຸກຄົນຂອງ Bootstrap js/dist/*.js), ຫຼືທັງຫມົດໃນເວລາດຽວໂດຍໃຊ້ bootstrap.jsຫຼືຫຍໍ້ bootstrap.min.js(ບໍ່ລວມທັງສອງ).

ຖ້າທ່ານໃຊ້ bundler (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>

ປລັກອິນທີ່ບໍ່ເຂົ້າກັນໄດ້

ເນື່ອງຈາກຂໍ້ຈໍາກັດຂອງຕົວທ່ອງເວັບ, ບາງ plugins ຂອງພວກເຮົາ, ຄື Dropdown, Tooltip ແລະ Popover plugins, ບໍ່ສາມາດຖືກນໍາໃຊ້ໃນ <script>ແທັກທີ່ມີ moduleປະເພດເພາະວ່າພວກມັນຂຶ້ນກັບ Popper. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບບັນຫາເບິ່ງ ທີ່ນີ້ .

ການເພິ່ງພາອາໄສ

ບາງ plugins ແລະອົງປະກອບ CSS ແມ່ນຂຶ້ນກັບ plugins ອື່ນໆ. ຖ້າທ່ານລວມເອົາ plugins ແຕ່ລະອັນ, ໃຫ້ແນ່ໃຈວ່າຈະກວດເບິ່ງການເພິ່ງພາອາໄສເຫຼົ່ານີ້ຢູ່ໃນເອກະສານ.

ການຫຼຸດລົງຂອງພວກເຮົາ, popovers ແລະຄໍາແນະນໍາເຄື່ອງມືຍັງຂຶ້ນກັບ Popper .

ຍັງຕ້ອງການໃຊ້ jQuery ບໍ? ມັນເປັນໄປໄດ້!

Bootstrap 5 ຖືກອອກແບບມາເພື່ອໃຊ້ໂດຍບໍ່ມີ jQuery, ແຕ່ມັນຍັງສາມາດໃຊ້ອົງປະກອບຂອງພວກເຮົາກັບ jQuery. ຖ້າ Bootstrap ກວດພົບ jQueryໃນ windowວັດຖຸ ມັນຈະເພີ່ມອົງປະກອບຂອງພວກເຮົາທັງຫມົດໃນລະບົບ plugin ຂອງ jQuery; ນີ້ຫມາຍຄວາມວ່າທ່ານຈະສາມາດເຮັດໄດ້ $('[data-bs-toggle="tooltip"]').tooltip()ເພື່ອເປີດໃຊ້ຄໍາແນະນໍາເຄື່ອງມື. ອັນດຽວກັນກັບອົງປະກອບອື່ນໆຂອງພວກເຮົາ.

ຄຸນລັກສະນະຂອງຂໍ້ມູນ

ເກືອບທຸກ plugins Bootstrap ສາມາດຖືກເປີດໃຊ້ງານແລະກໍາຫນົດຄ່າຜ່ານ HTML ຢ່າງດຽວດ້ວຍຄຸນລັກສະນະຂໍ້ມູນ (ວິທີທີ່ພວກເຮົາຕ້ອງການໃຊ້ຫນ້າທີ່ JavaScript). ໃຫ້ແນ່ໃຈວ່າ ໃຊ້ພຽງແຕ່ຫນຶ່ງຊຸດຂອງຄຸນລັກສະນະຂໍ້ມູນໃນອົງປະກອບດຽວ (ຕົວຢ່າງ, ທ່ານບໍ່ສາມາດກະຕຸ້ນຄໍາແນະນໍາເຄື່ອງມືແລະ modal ຈາກປຸ່ມດຽວກັນ.)

ຕົວເລືອກ

ໃນປັດຈຸບັນເພື່ອສອບຖາມອົງປະກອບ DOM ພວກເຮົາໃຊ້ວິທີການພື້ນເມືອງ querySelectorແລະ querySelectorAllສໍາລັບເຫດຜົນການປະຕິບັດ, ດັ່ງນັ້ນທ່ານຕ້ອງໃຊ້ ຕົວເລືອກທີ່ຖືກຕ້ອງ . ຖ້າທ່ານໃຊ້ຕົວເລືອກພິເສດ, ຕົວຢ່າງ: collapse:Exampleໃຫ້ແນ່ໃຈວ່າຈະຫນີພວກເຂົາ.

ເຫດການ

Bootstrap ໃຫ້ເຫດການທີ່ກໍາຫນົດເອງສໍາລັບການປະຕິບັດທີ່ເປັນເອກະລັກຂອງ plugins ສ່ວນໃຫຍ່. ໂດຍທົ່ວໄປແລ້ວ, ສິ່ງເຫຼົ່ານີ້ມາໃນຮູບແບບການມີສ່ວນຮ່ວມທີ່ບໍ່ມີຂອບເຂດ ແລະ ທີ່ຜ່ານມາ - ບ່ອນທີ່ infinitive (ex. 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 ຖ້າ 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 ໂປຣແກຣມ

ຜູ້ກໍ່ສ້າງທັງໝົດຍອມຮັບວັດຖຸທາງເລືອກທີ່ເປັນທາງເລືອກ ຫຼືບໍ່ມີຫຍັງເລີຍ (ເຊິ່ງລິເລີ່ມ plugin ທີ່ມີພຶດຕິກຳເລີ່ມຕົ້ນຂອງມັນ):

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

ຖ້າທ່ານຕ້ອງການເອົາຕົວຢ່າງ plugin ໂດຍສະເພາະ, ແຕ່ລະ plugin ຈະເປີດເຜີຍ getInstanceວິທີການ. ເພື່ອເອົາມັນໂດຍກົງຈາກອົງປະກອບ, ເຮັດສິ່ງນີ້: bootstrap.Popover.getInstance(myPopoverEl).

ຕົວເລືອກ CSS ໃນຕົວສ້າງ

ທ່ານຍັງສາມາດໃຊ້ຕົວເລືອກ CSS ເປັນການໂຕ້ຖຽງທໍາອິດແທນທີ່ຈະເປັນອົງປະກອບ DOM ເພື່ອເລີ່ມຕົ້ນ plugin. ໃນປັດຈຸບັນອົງປະກອບສໍາລັບ plugin ໄດ້ຖືກພົບເຫັນໂດຍ querySelectorວິທີການນັບຕັ້ງແຕ່ plugins ຂອງພວກເຮົາສະຫນັບສະຫນູນອົງປະກອບດຽວເທົ່ານັ້ນ.

var modal = new bootstrap.Modal('#myModal')
var dropdown = new bootstrap.Dropdown('[data-bs-toggle="dropdown"]')

ຟັງຊັນ ແລະ ການຫັນປ່ຽນແບບບໍ່ກົງກັນ

ວິທີການ API ທີ່ເປັນໂປຣແກຣມທັງໝົດແມ່ນ asynchronous ແລະກັບຄືນຫາຜູ້ໂທເມື່ອການຫັນປ່ຽນເລີ່ມຕົ້ນແຕ່ ກ່ອນທີ່ມັນຈະສິ້ນສຸດ .

ເພື່ອປະຕິບັດການກະທໍາເມື່ອການຫັນປ່ຽນສໍາເລັດ, ທ່ານສາມາດຟັງເຫດການທີ່ສອດຄ້ອງກັນໄດ້.

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 !!

ການຕັ້ງຄ່າເລີ່ມຕົ້ນ

ທ່ານ​ສາ​ມາດ​ປ່ຽນ​ການ​ຕັ້ງ​ຄ່າ​ເລີ່ມ​ຕົ້ນ​ສໍາ​ລັບ plugin ໄດ້​ໂດຍ​ການ​ປັບ​ປຸງ Constructor.Default​ຈຸດ​ປະ​ສົງ​ຂອງ plugin ໄດ້​:

// changes default for the modal plugin's `keyboard` option to false
bootstrap.Modal.Default.keyboard = false

ບໍ່ມີຂໍ້ຂັດແຍ່ງ (ພຽງແຕ່ຖ້າທ່ານໃຊ້ jQuery)

ບາງຄັ້ງມັນຈໍາເປັນຕ້ອງໃຊ້ plugins Bootstrap ກັບກອບ UI ອື່ນໆ. ໃນສະຖານະການເຫຼົ່ານີ້, ການຂັດກັນຂອງ namespace ສາມາດເກີດຂຶ້ນເປັນບາງຄັ້ງຄາວ. ຖ້າສິ່ງນີ້ເກີດຂຶ້ນ, ທ່ານອາດຈະໂທຫາ .noConflictplugin ທີ່ທ່ານຕ້ອງການທີ່ຈະກັບຄືນມູນຄ່າຂອງ.

var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality

ຕົວເລກສະບັບ

ສະບັບຂອງແຕ່ລະ plugins ຂອງ Bootstrap ສາມາດເຂົ້າເຖິງໄດ້ໂດຍຜ່ານ VERSIONຊັບສິນຂອງຕົວສ້າງຂອງ plugin. ສໍາລັບຕົວຢ່າງ, ສໍາລັບ plugin ຄໍາແນະນໍາເຄື່ອງມື:

bootstrap.Tooltip.VERSION // => "5.1.3"

ບໍ່ມີຂໍ້ບົກຜ່ອງພິເສດເມື່ອ JavaScript ຖືກປິດໃຊ້ງານ

ປັ໊ກອິນຂອງ Bootstrap ຈະບໍ່ກັບຄືນມາໂດຍສະເພາະເມື່ອ JavaScript ຖືກປິດໃຊ້ງານ. ຖ້າທ່ານສົນໃຈປະສົບການຂອງຜູ້ໃຊ້ໃນກໍລະນີນີ້, ໃຫ້ໃຊ້ <noscript>ເພື່ອອະທິບາຍສະຖານະການ (ແລະວິທີການເປີດໃຊ້ JavaScript ຄືນໃໝ່) ໃຫ້ກັບຜູ້ໃຊ້ຂອງເຈົ້າ, ແລະ/ຫຼືເພີ່ມການຕອບໂຕ້ແບບກຳນົດເອງຂອງເຈົ້າເອງ.

ຫ້ອງສະຫມຸດພາກສ່ວນທີສາມ

Bootstrap ບໍ່ຮອງຮັບຫ້ອງສະໝຸດ JavaScript ຂອງພາກສ່ວນທີສາມຢ່າງເປັນທາງການ ເຊັ່ນ Prototype ຫຼື jQuery UI. ເຖິງວ່າຈະມີ .noConflictເຫດການທີ່ມີ namespaced, ອາດຈະມີບັນຫາຄວາມເຂົ້າກັນໄດ້ທີ່ທ່ານຈໍາເປັນຕ້ອງແກ້ໄຂດ້ວຍຕົນເອງ.

ເຈວລ້າງມື

ຄໍາແນະນໍາເຄື່ອງມືແລະ 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)
  }
})