Guest User

Untitled

a guest
Jul 23rd, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. fluid = fluid || {};
  2. fluid.engage = fluid.engage || {};
  3.  
  4. (function ($) {
  5.  
  6. var addURLFragment = function (url) {
  7. var loc = window.location.href;
  8. var fragIdx = loc.indexOf("#");
  9. var newFrag = "#" + url;
  10. window.location = fragIdx > -1 ? loc.substring(0, fragIdx ) + newFrag : loc + newFrag;
  11. };
  12.  
  13. var injectElementsOfType = function (container, elementType, elements) {
  14. if (!elements || elements.length < 1) {
  15. return;
  16. }
  17.  
  18. var elementsOfType = $(elementType, container);
  19. var repeat = elementsOfType.length === 0 ? function (idx, element) {
  20. container.append(element);
  21. } : function (idx, element) {
  22. var lastEl = $(elementType + ":last", container);
  23. lastEl.after(element);
  24. };
  25.  
  26. $.each(elements, repeat);
  27. };
  28.  
  29. var inject = function (doc, container) {
  30. if (!doc || doc === "") {
  31. return;
  32. }
  33.  
  34. var headTag = doc.match( /<head(.|\s)*?\/head>/gi)[0],
  35. bodyTag = doc.match(/<body(.|\s)*?\/body>/gi)[0],
  36. linkTags = [].concat(headTag.match(/<link(.|\s)*?\/>/gi)).concat(headTag.match(/<link(.|\s)*?\/link>/gi)),
  37. scriptTags = headTag.match(/<script(.|\s)*?\/script>/gi);
  38.  
  39. var head = $("head");
  40. injectElementsOfType(head, "link", linkTags);
  41. injectElementsOfType(head, "script", scriptTags);
  42. container.html(bodyTag);
  43. };
  44.  
  45. fluid.engage.screenNavigatorLite = function (container) {
  46. var that = {
  47. container: container ? fluid.container(container) : $("body")
  48. };
  49.  
  50. that.injectPage = function (url) {
  51. $.ajax({
  52. url: url,
  53. dataType: "text",
  54. success: function (doc) {
  55. inject(doc, that.container);
  56. that.overridePageTransitions();
  57. },
  58. error: function (xhr, textstatus, errthrown) {
  59. alert(textstatus);
  60. }
  61. });
  62. };
  63.  
  64. that.overridePageTransitions = function () {
  65. // Override all natural page transitions and do them via Ajax instead.
  66. $("a:not([href^=#])").each(function (idx, link) {
  67. link = $(link);
  68. var url = link.attr("href");
  69. link.click(function (evt) {
  70. that.injectPage(url);
  71. // Use URL fragments to retain the vaguest semblance of sanity.
  72. addURLFragment(url);
  73. evt.preventDefault();
  74. });
  75. });
  76. };
  77.  
  78. return that;
  79. };
  80.  
  81. })(jQuery);
Add Comment
Please, Sign In to add comment