welcome-page-navigation.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. (function (root, factory) {
  2. var api = factory()
  3. if (typeof module === 'object' && module.exports) module.exports = api
  4. else root.WelcomePageNavigation = api
  5. }(typeof self !== 'undefined' ? self : this, function () {
  6. function navigateToMiniProgramHome(miniProgram, onFailure) {
  7. var fail = typeof onFailure === 'function' ? onFailure : function () {}
  8. if (!miniProgram || typeof miniProgram.reLaunch !== 'function') {
  9. fail()
  10. return false
  11. }
  12. try {
  13. miniProgram.reLaunch({
  14. url: '/pages/home',
  15. fail: fail
  16. })
  17. return true
  18. } catch (error) {
  19. fail(error)
  20. return false
  21. }
  22. }
  23. function bindWelcomeButton(button, getMiniProgram, onFailure) {
  24. if (!button || typeof button.addEventListener !== 'function') return
  25. var navigating = false
  26. function unlockAndReport(error) {
  27. navigating = false
  28. button.removeAttribute('aria-busy')
  29. if (typeof onFailure === 'function') onFailure(error)
  30. }
  31. button.addEventListener('click', function (event) {
  32. if (event && typeof event.preventDefault === 'function') event.preventDefault()
  33. if (navigating) return
  34. navigating = true
  35. button.setAttribute('aria-busy', 'true')
  36. var miniProgram = typeof getMiniProgram === 'function' ? getMiniProgram() : null
  37. navigateToMiniProgramHome(miniProgram, unlockAndReport)
  38. })
  39. }
  40. return {
  41. bindWelcomeButton: bindWelcomeButton,
  42. navigateToMiniProgramHome: navigateToMiniProgramHome
  43. }
  44. }))