dojo 自动加载页面 --- 按需要加载

前端之家收集整理的这篇文章主要介绍了dojo 自动加载页面 --- 按需要加载前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

点击菜单才会去加载页面,非iframe实现,感觉效果还可以;

有些地方不尽人意,例如解析其它的库如fusionchart就有点问题。

还有就是在IE下运行要注意,不知道为什么,dojo api官网地址在IE下运行也有问题。这是一件雷人的事;

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <Meta charset="utf-8">
  5. <title>COUNT-Magic Application</title>
  6. <link rel="shortcut icon" href="../resources/images/favicon.png" />
  7.  
  8. <link rel="stylesheet" href="app.css" type="text/css" />
  9. <script type="text/javascript">
  10. dojoConfig = {
  11. async: true,sysUser: {},contentRoot:'/sf/',locale: "zh"
  12. };
  13. </script>
  14. <script type="text/javascript" src="lib/dojo/dojo.js"></script>
  15. <script type="text/javascript" src="app.js" charset="utf-8"></script>
  16.  
  17. </head>
  18.  
  19. <body class="tundra">
  20. <!-- tree store -->
  21. <div data-dojo-type="dojo/data/ItemFileWriteStore" jsId="menuStore" url="data/menu.json"></div>
  22. <div data-dojo-type="dijit/Dialog" id="sendDialog" title="Submit Form">
  23. <div id="sendMailBar" style="text-align:center">
  24. <div id="fakeSend" data-dojo-type="dijit/ProgressBar" style="height:15px; width:175px;" indeterminate="true" ></div>
  25. </div>
  26. </div>
  27.  
  28. <div id="preloader">Loading Application...</div>
  29. <!-- Using Declarative Require to "hang" some modules off app object for declarative scripting -->
  30. <script type="dojo/require">
  31. "app.dom": "dojo/dom","app.registry": "dijit/registry"
  32. </script>
  33. <div data-dojo-type="dijit/layout/BorderContainer" id="mainContainer"
  34. data-dojo-id="app.mainContainer" data-dojo-props="liveSplitters: false">
  35. <!-- top -->
  36. <div data-dojo-type="dijit/layout/ContentPane" id="headerPane"
  37. data-dojo-props="region:'top',style:'height: 56px;',href:'topAp.html'">
  38. </div>
  39. <!-- leading -->
  40. <div data-dojo-type="dijit/layout/BorderContainer" id="mainSplitter" style="width:222px;"
  41. data-dojo-props="region:'leading',splitter: true,gutters: false">
  42. <div data-dojo-type="dijit/layout/ContentPane" style=" height:36px;background:#fe942c url(../resources/nav_top_bg.png) repeat-x; "
  43. data-dojo-props="title:'Search',region:'top'">
  44. <span class="index_nav_name thinger" id="nat-title">
  45. 管理菜单
  46. </span>
  47. <span style="width:26px;height:32px; float:right; overflow: hidden;">
  48. <img alt="" src="../resources/ARROW.png" id="panelToggle" style="margin:0;height:36px;width:16px;border:none; cursor: pointer;">
  49. </span>
  50. </div>
  51. <div data-dojo-type="dijit/layout/AccordionContainer" class="thinger"
  52. id="leftAccordion" data-dojo-props='region: "center",splitter:true,minSize:120'>
  53. <div data-dojo-type="dijit/Tree" id="myNavTree" data-dojo-id="myNavTree" store="menuStore"
  54.  
  55. childrenAttr="folders" query="{type:'folder'}" label="Folders" data-dojo-props="store:menuStore,query:{type:'folder'},showRoot: false,title: '分析导航',iconClass:'dijitEditorIcon dijitEditorIconCopy'">
  56. <script type="dojo/method" event="onClick" args="item">
  57. //console.dir(item);
  58. if(!item){
  59. return;
  60. }
  61. app.addTab("mainTabContainer",dojoConfig.contentRoot+item.url[0],item.label[0],true);
  62. </script>
  63. </div>
  64. <div data-dojo-type="dijit/layout/ContentPane" id="ap2"
  65. data-dojo-props="title: '系统设置',iconClass:'dijitEditorIcon dijitEditorIconCopy',href:'ap2.html'"
  66. class="paneAccordion"></div>
  67. <div data-dojo-type="dijit/layout/ContentPane" id="ap3"
  68. data-dojo-props="title: '帮助',href:'help.html'"
  69. class="paneAccordion"></div>
  70. </div>
  71.  
  72. </div>
  73. <!-- center -->
  74. <div data-dojo-type="dijit/layout/TabContainer" id="mainTabContainer"
  75. data-dojo-props="region: 'center',tabStrip: true">
  76. <div data-dojo-type="dijit/layout/ContentPane" id="tabWelcome"
  77. data-dojo-props="title: 'Welcome',href:'tabWelcome.html'"></div>
  78. </div>
  79. </div>
  80. </body>


  1. require([
  2. "dojo/_base/fx","dojo/_base/lang","dojo/dom-style","dojo/parser","dojo/ready","dijit/registry","dijit/layout/ContentPane"
  3. ],function(baseFx,lang,domStyle,parser,ready,registry,ContentPane) {
  4.  
  5. lang.setObject("app.basename",function(path,suffix) {
  6.  
  7. var b = path.replace(/^.*[\/\\]/g,'');
  8.  
  9. if (typeof(suffix) == 'string' && b.substr(b.length - suffix.length) == suffix) {
  10. b = b.substr(0,b.length - suffix.length);
  11. }
  12.  
  13. return b;
  14. });
  15. lang.setObject("app.addTab",function(tabContainer,href,title,closable) {
  16. if (typeof tabContainer === "string") {
  17. tabContainer = registry.byId(tabContainer);
  18. }
  19. var tabName = "tab" + app.basename(href,".html"),tab = registry.byId(tabName);
  20. if (typeof tab === "undefined") {
  21. tab = new ContentPane({
  22. id: tabName,title: title,href: href,closable: closable,style: "padding: 3px;"
  23. });
  24. tabContainer.addChild(tab);
  25. }
  26. tabContainer.selectChild(tab);
  27. });
  28. lang.setObject("app.formatterInCode",function(iconClass) {
  29. //使用全局IP代替
  30. return '<div class="">' + iconClass + '</div>';
  31. });
  32. lang.setObject("app.formatterIcon",function(iconClass) {
  33. return '<div class="' + iconClass + '"></div>';
  34. });
  35. lang.setObject("app.formatterStatusIcon",function(iconClass) {
  36. return '<div class="' + (iconClass==1?'isOne':'notOne') + '"></div>';
  37. });
  38. ready(function() {
  39. var iconClass = '6';
  40. var codeIp = window.location.href;
  41. codeIp = codeIp.substring(codeIp.indexOf("://")+3,codeIp.length);
  42.  
  43. var tempStr = '<script type="text/javascript">';
  44. tempStr += "</script>";
  45. console.info(tempStr);
  46. var nameBY = 'theme1'
  47. function getQueryStringRegExp()
  48. {
  49. var reg = new RegExp("(^|\\?|&)" + nameBY + "=([^&]*)(\\s|&|$)","i");
  50. if (reg.test(location.href))
  51. return unescape(RegExp.$2.replace(/\+/g," "));
  52. return "";
  53. };
  54. //console.dir(dojo.hasClass(document.body,theme));
  55. var theme = getQueryStringRegExp() || '';
  56. //alert(codeIp+"\n"+theme);
  57. if(theme){
  58. dojo.removeClass(document.body);
  59. dojo.addClass(document.body,theme);
  60. }
  61. parser.parse().then(function(objects) {
  62. baseFx.fadeOut({//Get rid of the loader once parsing is done
  63. node: "preloader",onEnd: function() {
  64. domStyle.set("preloader","display","none");
  65. }
  66. }).play();
  67. });
  68.  
  69. var oldWid = null;
  70. dojo.connect(dojo.byId("panelToggle"),'click',function(){
  71. var sty = 'block';
  72. var src = '.png';
  73. if(dojo.attr(dojo.byId("panelToggle"),'src').indexOf('resources/ARROW.png')!=-1)
  74. {
  75. sty = 'none';
  76. src = '-R.png';
  77. oldWid = domStyle.get("mainSplitter",'width');
  78. domStyle.set("mainSplitter",'width','30px');
  79. }
  80. else
  81. {
  82. domStyle.set("mainSplitter",oldWid+'px');
  83. }
  84. //console.info(oldWid);
  85. dojo.attr(dojo.byId("panelToggle"),'src','../resources/ARROW'+src);
  86. dojo.query(".thinger").style("display",sty);
  87. app.registry.byId("mainContainer").layout();
  88. //console.dir(app.registry.byId("mainContainer"));
  89. });
  90. });
  91. });

猜你在找的Dojo相关文章