您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 网站教程 > HTML教程 >
    基于HTML5构建Web操作系统(2)
    时间:2016-07-13 21:12 来源: 作者: 浏览:收藏 挑错 推荐 打印

    基于HTML5构建Web操作系统
    图 1.桌面拖拽效果
    程序打开
    程序可以以两种方式打开,左键点击或通过上下文菜单打开。
    通过监听div的onclick事件,获取要打开的应用程序id,并利用openApp方法打开相应的应用程序可实现对左键点击的支持。
    清单 3.左键点击
    1. iconHolder.onclick =  function(ev){   
    2.  if(ev.currentTarget.firstChild){   
    3.         openApp(ev.currentTarget.firstChild.id);   
    4.         ev.stopPropagation();   
    5.  }   
    6.  };   
    通过监听div的oncontextmenu事件,获取要打开的应用程序id,并利用openAppContextMenu 方法显示相应应用程序的上下文菜单,可实现对右键上下文菜单的支持。
    清单 4.上下文菜单
    1. iconHolder.oncontextmenu =  function(ev){   
    2. if(ev.currentTarget.firstChild){   
    3.        openAppContextMenu(ev.currentTarget.firstChild.id, ev);   
    4.        ev.stopPropagation();   
    5. }   
    6. return false;   
    7. };  
    利用相应应用程序的id,可以获取对应应用程序的脚本,并执行,同时在系统日志中记录下相应的操作。
    清单 5.程序打开
    1. function openApp(appId){   
    2.     var time = new Date().getTime();   
    3.     var action = "open app";   
    4.     var details = "open: " + appId;   
    5.     addHistory(time, action, details);// 记录系统日志   
    6.     var appScript = getAppScript(appId);// 获取应用程序脚本   
    7.     eval(appScript);// 执行应用程序  
    8.  }  
    清单 6.打开程序上下文菜单
    1.                
    2. function openAppContextMenu(appId, ev){   
    3. var appContextMenu = document.getElementById("appContextMenu");   
    4. appContextMenu.style.display="block";// 令上下文菜单可见  
    5. appContextMenu.style.pixelTop=ev.clientY;// 设置上下文菜单位置   
    6. appContextMenu.style.pixelLeft=ev.clientX;   
    7. appContextMenu.style.background = "#eee";   
    8. appContextMenu.style.color = "black";   
    9. appContextMenu.style.fontSize = "30";   
    10. appContextMenu.style.width = "200px";   
    11. appContextMenu.style.height = "220px";   
    12. appContextMenu.style.opacity = 0.5;// 令上下文菜单透明度为 50%   
    13. appContextMenu.innerHTML = "";   
    14.  
    15. // 获取应用程序相应上下文菜单的内容  
    16. var apps = getApps();   
    17. for(var i=0; i<apps.length; i++){   
    18.                if(apps[i].appId == appId){   
    19.                        for(var j=0; j<apps[i].contextMenu.length; j++){   
    20.                        appContextMenu.innerHTML += "<div class='appContextMenuItem'   
    21.                        onclick=\"appContextMenu.style.display='none';" +   
    22.                        apps[i].contextMenu[j].action + "\"   

      (责任编辑:12图资源库)