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