frame.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. define(['jquery'], function($) {
  2. "use strict";
  3. var pearFrame = function(opt) {
  4. this.option = opt;
  5. };
  6. pearFrame.render = function(opt) {
  7. var option = {
  8. elem: opt.elem,
  9. url: opt.url,
  10. title: opt.title,
  11. width: opt.width,
  12. height: opt.height,
  13. done: opt.done ? opt.done : function() {
  14. console.log("菜单渲染成功");
  15. }
  16. }
  17. renderContent(option);
  18. $("#" + option.elem).width(option.width);
  19. $("#" + option.elem).height(option.height);
  20. return new pearFrame(option);
  21. }
  22. pearFrame.prototype.changePage = function(url, loading) {
  23. var $frameLoad = $("#" + this.option.elem).find(".pear-frame-loading");
  24. var $frame = $("#" + this.option.elem + " iframe");
  25. $frame.attr("src", url);
  26. renderContentLoading($frame, $frameLoad, loading);
  27. }
  28. pearFrame.prototype.changePageByElement = function(elem, url, title, loading) {
  29. var $frameLoad = $("#" + elem).find(".pear-frame-loading");
  30. var $frame = $("#" + elem + " iframe");
  31. $frame.attr("src", url);
  32. $("#" + elem + " .title").html(title);
  33. renderContentLoading($frame, $frameLoad, loading);
  34. }
  35. pearFrame.prototype.refresh = function(loading) {
  36. var $frameLoad = $("#" + this.option.elem).find(".pear-frame-loading");
  37. var $frame = $("#" + this.option.elem).find("iframe");
  38. $frame.attr("src", $frame.attr("src"));
  39. renderContentLoading($frame, $frameLoad, loading);
  40. }
  41. function renderContent(option) {
  42. var iframe = `<iframe class='pear-frame-content' style='width:100%;height:100%;' scrolling='auto' frameborder='0' src='${option.url}' allowfullscreen='true' ></iframe>`;
  43. var loading = `<div class="pear-frame-loading">
  44. <div class="ball-loader">
  45. <span></span><span></span><span></span><span></span>
  46. </div>
  47. </div></div>`;
  48. $("#" + option.elem).html("<div class='pear-frame'>" + iframe + loading + "</div>");
  49. }
  50. function renderContentLoading (iframeEl, loadingEl, isLoading) {
  51. if (isLoading) {
  52. loadingEl.css({
  53. display: 'block'
  54. });
  55. $(iframeEl).on('load', function() {
  56. loadingEl.fadeOut(1000);
  57. })
  58. }
  59. }
  60. return pearFrame;
  61. });