Pjax.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. let $d = $(document);
  2. export default class Pjax {
  3. constructor(Dcat) {
  4. this.boot(Dcat)
  5. }
  6. boot(Dcat) {
  7. let container = Dcat.config.pjax_container_selector;
  8. $.pjax.defaults.timeout = 5000;
  9. $.pjax.defaults.maxCacheLength = 0;
  10. $('a:not(a[target="_blank"])').click(function (event) {
  11. $.pjax.click(event, container, { fragment: 'body' });
  12. });
  13. $d.on('pjax:timeout', function (event) {
  14. event.preventDefault();
  15. });
  16. $d.on('submit', 'form[pjax-container]', function (event) {
  17. $.pjax.submit(event, container)
  18. });
  19. $d.on("pjax:popstate", function () {
  20. $d.one("pjax:end", function (event) {
  21. $(event.target).find("script[data-exec-on-popstate]").each(function () {
  22. $.globalEval(this.text || this.textContent || this.innerHTML || '');
  23. });
  24. });
  25. });
  26. $d.on('pjax:send', function (xhr) {
  27. if (xhr.relatedTarget && xhr.relatedTarget.tagName && xhr.relatedTarget.tagName.toLowerCase() === 'form') {
  28. var $submit_btn = $('form[pjax-container] :submit');
  29. if ($submit_btn) {
  30. $submit_btn.button('loading')
  31. }
  32. }
  33. Dcat.NP.start();
  34. });
  35. $d.on('pjax:complete', function (xhr) {
  36. if (xhr.relatedTarget && xhr.relatedTarget.tagName && xhr.relatedTarget.tagName.toLowerCase() === 'form') {
  37. var $submit_btn = $('form[pjax-container] :submit');
  38. if ($submit_btn) {
  39. $submit_btn.button('reset')
  40. }
  41. }
  42. Dcat.NP.done();
  43. });
  44. // 新页面加载,重新初始化
  45. $d.on('pjax:loaded', Dcat.boot);
  46. }
  47. }