`
mimang2007110
  • 浏览: 237173 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

JQuery写的类似于CMD的页面

 
阅读更多

自己写的一个类似于CMD的页面,供有需要的参考

1、HTML代码

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<title></title>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8">
		<link rel="stylesheet" type="text/css" href="../../css/content.css"/>
		<link rel="stylesheet" type="text/css" href="../../css/default/om-default.css"/>
		<link rel="stylesheet" type="text/css" href="../../css/form_style.css"/>
		<script type="text/javascript" src="../../script/jquery.min.js"></script>
		<script type="text/javascript" src="../../script/operamasks-ui.min.js"></script>
		<script type="text/javascript" src="../../script/util.js"></script>
		<script type="text/javascript" src="../../script/shell/shell.js"></script>
	</head>
	<body>
		<div align="center">
			<br/><br/>
			<div id="result_div" class="result_div" align="left"></div>
			<div id="command_div" class="command_div" align="left">
				<div class="shell_input_div">
					shell><input name="shell_command" class="shell_input" type="text" />
				</div>
			</div>
			<div id="resultContextMenu"></div>
			<div id="commandContextMenu"></div>
		</div>
	</body>
</html>

 2、JS代码

$(document).ready(function()
{
	// 记录已经输入的命令
	var commandArr = [];
	
	// 当前索引,用于回忆已经输入的命令
	var index = 0;
	
	// 设置父页面iframe高度
	parent.setIframeHeight("htmlshellshellhtml", 500);
	
	// 命令输入框
	var html = '<div class="shell_input_div">';
	html += 'shell>';
	html += '<input name="shell_command" class="shell_input" type="text" />';
	html += '</div>';
	
	// shell命令输入框获得焦点
	$('input[name=shell_command]').focus();
	
	// 输出结果框滚动条
	$("#result_div").omScrollbar(
	{
        thick:10
    });
	
	// 命令框滚动条
	$("#command_div").omScrollbar(
	{
        thick:10
    });
	
	// shell命令输入框回车事件
	$('input[name=shell_command]').keydown(function(event)
	{
		inputKeyDown(event);
	});
	
	// 输入框键盘事件
	var inputKeyDown = function(event)
	{
		// 回车
		if (13 == event.keyCode)
		{
			getShellResult();
		}
		// 上翻
		else if (38 == event.keyCode)
		{
			if(commandArr.length > 0)
			{
				// 把回忆到的命令放到输入框
				$('input[name=shell_command]').val(commandArr[index--]);
				
				// 更新索引
				if(0 > index)
				{
					index = commandArr.length - 1;
				}
			}
		}
		// 下翻
		else if (40 == event.keyCode)
		{
			if(commandArr.length > 0)
			{
				// 把回忆到的命令放到输入框
				$('input[name=shell_command]').val(commandArr[index++]);
				
				// 更新索引
				if(index >= commandArr.length)
				{
					index = 0;
				}
			}
		}
	}
	
	// 获取查询结果并显示到页面
	var getShellResult = function()
	{
		// 获取输入框值
		var value = $('input[name=shell_command]').val();
		
		// 如果值不为空则执行查询命令
		if(!isEmpty(value))
		{
			// 查询该shell命令
			$.ajax(
			{
				type : 'POST',
				url : '../../shell/getShell',
				data : "shellCommand=" + value,
				success : function(msg)
				{
					// 把命令放到上下文中用于上下键翻的时候使用
					commandArr.push(value);
					index = commandArr.length - 1;
					
					// 替换成页面换行标签
					if(!isEmpty(msg))
					{
						msg = msg.replace(/\r\n/g, "<br/>").replace(/\n/g, "<br/>");
					}
					
					// 更新输入框父级层的内容
					var parDiv = $('input[name=shell_command]').parent();
					parDiv.empty();
					parDiv.append("shell>" + value);
					
					// 更新总层的内容
					var pparDiv = parDiv.parent();
					pparDiv.append(html);
					
					// 新添加的文本框绑定回车事件
					$('input[name=shell_command]').keydown(function(event)
					{
						inputKeyDown(event);
					});
					
					// 滚动条始终保持在最底部
					setScroll("command_div");
					
					// 展示在界面上
					var html_result = '<div class="shell_result_div">';
					html_result += '<span>请求的shell命令:</span><br/>';
					html_result += '<span>';
					html_result += value;
					html_result += '</span><br/>';
					html_result += '<span>响应的结果:</span><br/>';
					html_result += '<span>';
					html_result += msg;
					html_result += '</span><br/>';
					html_result += '<hr/>';
					html_result += '</div>';
					$("#result_div").append(html_result);
					
					// 设置滚动条始终在最底部
					setScroll("result_div");

					// 新添加的文本框获得焦点
					$('input[name=shell_command]').focus();
				},
				error : function(XMLHttpRequest, textStatus, errorThrown)
				{
					// 提示数据加载失败
					$.omMessageBox.alert(
					{
				        type : 'error',
				        title : '友情提示',
				        content : '数据获取失败,请重试',
				        onClose : function(value)
				        {
				        	// 输入框获得焦点
							$('input[name=shell_command]').focus();
				        }
				    });
				}
			});
		}
	}
	
	// 设置滚动条始终在最底部
	var setScroll = function(divID)
	{
		$("#" + divID).omScrollbar('refresh');
		$("#" + divID).scrollTop($("#" + divID)[0].scrollHeight);
	}
	
	// shell命令结果右键菜单
	$('#resultContextMenu').omMenu(
	{
        contextMenu : true,
        dataSource : 
        [
 			{
 				id : 'clear',
 				label : '清空结果',
 				icon : '../../images/clear.png'
 			}
 		],
 		onSelect : function(item, event)
 		{
 			// 清空层内容
 			$('#result_div').empty();
 			
 			// 刷新滚动条
			$("#result_div").omScrollbar('refresh');
        }
    });

	// shell命令层右键菜单
	$('#commandContextMenu').omMenu(
	{
        contextMenu : true,
        dataSource : 
        [
 			{
 				id : 'clear',
 				label : '清空命令',
 				icon : '../../images/clear.png'
 			}
 		],
 		onSelect : function(item, event)
 		{
 			// 清空层内容只保留一个输入框
 			$('#command_div').empty();
			$('#command_div').append(html);

 			// 刷新滚动条
			$("#command_div").omScrollbar('refresh');
			
			// 输入框获得焦点
			$('input[name=shell_command]').focus();
			
			// 新添加的文本框绑定回车事件
			$('input[name=shell_command]').keydown(function(event)
			{
				inputKeyDown(event);
			});
        }
    });
	
	// 绑定在结果层上
	$('#result_div').bind('contextmenu', function(e)
	{
		// 显示右键菜单
		$('#resultContextMenu').omMenu('show', e);
	});

	// 绑定在命令层上
	$('#command_div').bind('contextmenu', function(e)
	{
		// 显示右键菜单
		$('#commandContextMenu').omMenu('show', e);
	});
});

 

 

分享到:
评论

相关推荐

    健身俱乐部Web网站-JSP+Servlet+Hibernate+jQuery+Ajax

    另外除了注册页面也非常详细的数据验证,其他页面如添加活动页面基本没有数据验证(不想重复劳动,代码基本非常类似). 代码中用到了较多的jQuery和部分Ajax(借助jQuery实现),在阅读代码的时候如果不熟悉jQuery...

    AMD之require.js与CMD之sea.js

    sea.js也提供了类似的`config`方法来处理非CMD模块,类似于require.js的`shim`。 总的来说,AMD和CMD在模块化开发中各有优势。AMD更适用于大型项目,尤其是需要动态加载和按需加载的场景,而CMD则更适合小规模的、...

    Asp.net 调用jquery的插件flexgrid

    在ASP.NET页面的`&lt;head&gt;`标签中,添加对jQuery和wijmo库的引用。确保这些文件与你的网页在同一目录结构下,或者通过CDN链接获取: ```html &lt;script src="path/to/jquery.min.js"&gt; ...

    asp.net分页 类似百度 的分页

    通过上述步骤,我们可以构建一个类似于百度的分页系统,既能高效地处理大数据,又能提供良好的用户体验。在实际开发中,还需要考虑错误处理、用户体验优化和性能测试等细节,以确保分页功能的稳定性和效率。

    seajs入门完整案例,适合新手学习

    1. **模块化开发**:Seajs 提供了类似于 Node.js 的模块加载机制,允许开发者将代码分解为多个模块,每个模块都有自己的作用域,避免全局变量污染,提高代码可维护性。 2. **CMD(Common Module Definition)规范**...

    ajax实现无刷新对数据库的操作

    3. **修改操作**:类似添加,用户编辑数据后,Ajax 将更新后的数据发送到服务器。服务器执行 SQL 更新语句,然后返回更新结果。客户端接收到响应后,更新显示的数据。 在提供的文件列表中,我们看到 `index.asp` 和...

    node_douban.rar

    Node.js是JavaScript的服务器端实现,而Cheerio则是一个JavaScript库,用于快速、高效地处理HTML文档,类似于jQuery在浏览器中的作用。Cheerio允许开发者使用熟悉的jQuery语法来解析和操作HTML页面,这对于Web爬虫来...

    Modules02. JavaScript 模块化编程.pdf_前端学习资料

    3. **CMD(Common Module Definition)**:CMD是SeaJS提出的,与AMD类似,也支持异步加载,但推崇依赖就近原则,即延迟执行依赖。CMD的`require()`函数会自动处理依赖。 4. **UMD(Universal Module Definition)**...

    beautifuls

    3. **搜索**:BeautifulSoup支持CSS选择器,可以使用类似jQuery的语法来选取元素,这对于熟悉前端开发的开发者来说非常友好。 4. **修改文档**:除了读取,还可以通过BeautifulSoup修改解析树,比如改变元素的属性...

    js淘宝kissy框架制作千百汇家居购物商城购买引导动画效果

    Kissy的DOM模块提供了类似于jQuery的接口,如`query`用于选择元素,`append`用于插入内容,`hide`和`show`用于控制元素可见性。 5. **时间线管理**:为了同步多个动画,可以使用Kissy的时间线管理工具。通过创建和...

    ExtJS官方中文教程_98page

    ExtJS 提供了`Ext.select()`方法,类似于jQuery的选择器,可以方便地选取一组DOM元素,并返回Element的数组。 6. 响应事件 在ExtJS中,事件处理通常通过`addListener()`方法(或简写为`on()`)实现,可以为组件或...

    ASP.NET中DropDrownList控件的省市县三级联动

    这一过程主要依赖于JavaScript或AJAX来实现前端的实时更新,同时后台需要提供接口返回对应级别的数据。 在ASP.NET中,DropDrownList控件是用于创建下拉列表的常用组件。我们首先要在页面上创建三个DropDrownList...

    JavaScript的模块化开发框架Sea.js上手指南

    Sea.js遵循CMD(Common Module Definition)规范,与Node.js的模块系统类似,允许通过`require`引入模块,`exports`或`module.exports`导出接口。这种模块化的方式有助于代码的分隔、复用和维护,使得大型项目管理变...

Global site tag (gtag.js) - Google Analytics