`
Kaza
  • 浏览: 17505 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

浏览器上模拟windows下的鼠标框选文件

阅读更多
历时1个工作日多一点。。基本能满足需要。。。

因为考虑到跨浏览器和一些之后的ajax操作,所以用了dojo包。。。想看实际效果的,还需要自己配置一个dojo的环境。。。
<html>
<head>
<title></title>
<script type="text/javascript" src="../JS/dojo/dojo.js"></script>
</head>
<body>

<script>
dojo.require("dojo.html.*");

var divs = new Array();
var move=false; 
var x = 0;
var y = 0;
var divId = "";
var onMove=false;
var selDivId = "";

function O(div) {
	this.id = div.id;
	this.x = dojo.html.getAbsoluteX(div, null);
	this.y = dojo.html.getAbsoluteY(div, null);
	this.width = dojo.html.getBorderBoxWidth(div);
	this.height = dojo.html.getBorderBoxHeight(div);
}

function initFileDivsPosition() {
	for(var i = 1; i <= 12; i++) {
		var div = dojo.byId("div_" + i);
		var obj = new O(div);
		divs.push(obj);
	}
}

function initFileDivsBG() {
	var ids = selDivId.split(",");
	for(var i = 0; i < ids.length - 1; i++) {
		//alert(ids[i]);
		dojo.byId(ids[i]).style.backgroundColor = "red";
	}
}

function isTouch(dragObj, tmpObj) {
	var lx = dragObj.x - tmpObj.width;
	var rx = parseInt(dragObj.x) + parseInt(dragObj.width);
	var ty = dragObj.y - tmpObj.height;
	var by = parseInt(dragObj.y) + parseInt(dragObj.height);
	//alert(lx + "=" + rx + "=" + ty + "=" + by + "\n" + dragDivX + "=" + dragDivY);
	if((tmpObj.x > lx && tmpObj.x < rx) && (tmpObj.y > ty && tmpObj.y < by)) {
		return true;
	} else {
		return false;
	}
}

function isContain(dragObj, tmpObj) {
	if((tmpObj.x > dragObj.x && (tmpObj.x - dragObj.x + tmpObj.width) < dragObj.width)
			&& (tmpObj.y > dragObj.y && (tmpObj.y - dragObj.y + tmpObj.height) < dragObj.height)) {
		return true;
	} else {
		return false;
	}
}

function touchDiv(div) {
	var dragObj = new O(div);
	for(var i = 0; i < divs.length; i++) {
		var tmpObj = divs[i];
		if(isTouch(dragObj, tmpObj)) {
			//alert(nowObj.x + "---" + leftX + "---" + rightX + "|||" + nowObj.y + "---" + topY + "---" + bottomY);
			//alert(tmpObj.id);
			dojo.byId(tmpObj.id).style.backgroundColor = "blue";
			if(selDivId.indexOf(tmpObj.id + ",") == -1) {
				selDivId = selDivId + tmpObj.id + ",";
			}
			//return tmpObj.id;
		} else {
			dojo.byId(tmpObj.id).style.backgroundColor = "red";
			selDivId.replace(tmpObj.id, "");
			//return tmpObj.id;
		}
	}
	//return 0;
}

function startDrag(e) {
	initFileDivsPosition();
	initFileDivsBG();
	selDivId = "";
	dojo.event.connect(dojo.byId("div_main"), "onmousemove", "drag");
	if(dojo.render.html.ie) {
		if(e.button == 1) {
			var dragDiv = dojo.byId("div_dragging");
			x = e.clientX;
			y = e.clientY;
			dragDiv.style.left = x;
			dragDiv.style.top = y;
			move=true;
			onMove = true;
		}
	} else {
		if(e.button == 0) {
			var dragDiv = dojo.byId("div_dragging");
			x = e.clientX;
			y = e.clientY;
			dragDiv.style.left = e.clientX;
			dragDiv.style.top = e.clientY;
			move=true;
			onMove = true;
		}
	}
}

function drag(e) {
	if(move) {
		var dragDiv = dojo.byId("div_dragging");
		if(e.clientX - x >= 0) {
			dragDiv.style.width = e.clientX - dragDiv.style.left.replace("px","");
			dragDiv.style.left = x;
		} else {
			dragDiv.style.width = x - e.clientX;
			dragDiv.style.left = e.clientX;
		}
		if(e.clientY - y >= 0) {
			dragDiv.style.height = e.clientY - dragDiv.style.top.replace("px","");
			dragDiv.style.top = y;
		} else {
			dragDiv.style.height = y - e.clientY;
			dragDiv.style.top = e.clientY;
		}
		dragDiv.style.display = "block";
		touchDiv(dragDiv);
	}
}

function stopDrag(e) {
//touchDiv(dojo.byId("div_dragging"));
	if(dojo.render.html.ie) {
		if(e.button == 1) {
			var dragDiv = dojo.byId("div_dragging");
			var lt = dragDiv.style.left.replace("px","") + "," + dragDiv.style.top.replace("px","");
			var lb = dragDiv.style.left.replace("px","") + "," + (parseInt(dragDiv.style.top.replace("px","")) + parseInt(dragDiv.style.height.replace("px","")));
			var rt = (parseInt(dragDiv.style.left.replace("px","")) + parseInt(dragDiv.style.width.replace("px",""))) + "," + dragDiv.style.top.replace("px","");
			var rb = (parseInt(dragDiv.style.left.replace("px","")) + parseInt(dragDiv.style.width.replace("px",""))) + "," + (parseInt(dragDiv.style.top.replace("px","")) + parseInt(dragDiv.style.height.replace("px","")));
			//alert("左上:(" + lt + ")右上:(" + rt + ")\n左下:(" + lb + ")右下:(" + rb + ")");
			dragDiv.style.display = "none";
			dragDiv.style.width = "0px";
			dragDiv.style.height = "0px";
			x = 0;
			y = 0;
			move=false;
			onMove = false;
		}
	} else {
		if(e.button == 0) {
			var dragDiv = dojo.byId("div_dragging");
			var lt = dragDiv.style.left.replace("px","") + "," + dragDiv.style.top.replace("px","");
			var lb = dragDiv.style.left.replace("px","") + "," + (parseInt(dragDiv.style.top.replace("px","")) + parseInt(dragDiv.style.height.replace("px","")));
			var rt = (parseInt(dragDiv.style.left.replace("px","")) + parseInt(dragDiv.style.width.replace("px",""))) + "," + dragDiv.style.top.replace("px","");
			var rb = (parseInt(dragDiv.style.left.replace("px","")) + parseInt(dragDiv.style.width.replace("px",""))) + "," + (parseInt(dragDiv.style.top.replace("px","")) + parseInt(dragDiv.style.height.replace("px","")));
			//alert("左上:(" + lt + ")右上:(" + rt + ")\n左下:(" + lb + ")右下:(" + rb + ")");
			dragDiv.style.display = "none";
			dragDiv.style.width = "0px";
			dragDiv.style.height = "0px";
			x = 0;
			y = 0;
			move=false;
			onMove = false;
		}
	}
	dojo.event.disconnect(dojo.byId("div_main"), "onmousemove", "drag");
	alert(selDivId);
}

</script> 

<div id="div_main" style="width:30%; height:50%; background-color:#eeeeee;" onmousedown="startDrag(event)" onmouseup="stopDrag(event)">
	<div id="div_1" style="width:34px; height:30px; float:left; background:url(move_div/images/folder_icon_big.png);"></div>
	<div id="div_2" style="width:34px; height:30px; float:left; background:url(move_div/images/folder_icon_big.png);"></div>
	<div id="div_3" style="width:34px; height:30px; float:left; background:url(move_div/images/folder_icon_big.png);"></div>
	<div id="div_4" style="width:34px; height:30px; float:left; background:url(move_div/images/folder_icon_big.png);"></div>
	<div id="div_5" style="width:34px; height:30px; float:left; background:url(move_div/images/folder_icon_big.png);"></div>
	<div id="div_6" style="width:34px; height:30px; float:left; background:url(move_div/images/folder_icon_big.png);"></div>
	<div id="div_7" style="width:34px; height:30px; float:left; background:url(move_div/images/folder_icon_big.png);"></div>
	<div id="div_8" style="width:34px; height:30px; float:left; background:url(move_div/images/folder_icon_big.png);"></div>
	<div id="div_9" style="width:34px; height:30px; float:left; background:url(move_div/images/folder_icon_big.png);"></div>
	<div id="div_10" style="width:34px; height:30px; float:left; background:url(move_div/images/folder_icon_big.png);"></div>
	<div id="div_11" style="width:34px; height:30px; float:left; background:url(move_div/images/folder_icon_big.png);"></div>
	<div id="div_12" style="width:34px; height:30px; float:left; background:url(move_div/images/folder_icon_big.png);"></div>
	<div id="div_dragging" style="position:absolute; left:0px; top:0px; width:0px; height:0px; border:1px solid #000000; display:none; z-index:99; overflow:hidden;"></div>
</div>

</body> 
</html> 
3
2
分享到:
评论
2 楼 gulufather 2010-04-16  
靠 你这么一大段代码 恶心死了 谁看谁得疯
1 楼 congjl2002 2008-09-05  
发上来一个截图就更好了

相关推荐

    完整版模拟鼠标移动.rar

    这个"完整版模拟鼠标移动.rar"文件可能包含了一系列工具、库或代码示例,用于在计算机上模拟鼠标的动作,如点击、移动、滚动等。下面我们将详细探讨这一主题。 1. **什么是模拟鼠标移动?** 模拟鼠标移动是通过...

    Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)

    本节主要介绍如何安装`pywin32`库,它是Windows平台上一个非常有用的扩展库,能够帮助我们实现与Windows系统的交互。 ##### 安装`pywin32` 1. **开发环境需求**: - 操作系统:Windows 7及以上版本 - Python:已...

    C# 模拟鼠标点击、键盘输入

    // 模拟鼠标按下 Cursor.Position = clickPosition; MouseEventArgs mouseDownArgs = new MouseEventArgs(MouseButtons.Left, 1, clickPosition.X, clickPosition.Y, 0); Control.MouseClick(null, mouseDownArgs); ...

    delphi WebBrowse模拟鼠标点击

    在Delphi中,我们可以使用PostMessage函数发送这些消息到WebBrowser控件,模拟鼠标按下和释放的动作。以下是基本的步骤: 1. 获取WebBrowser控件的句柄(Handle),这是发送消息的目标。 2. 使用GetCursorPos函数...

    模拟鼠标操作.zip

    在Windows操作系统中,有时我们需要通过编程来实现对鼠标的模拟操作,这在自动化测试、游戏辅助、用户界面自动化等场景中十分常见。本压缩包"模拟鼠标操作.zip"包含了一个用C语言编写的程序,它利用了Windows API中...

    模拟鼠标点击,鼠标录制回访工具

    在提供的压缩包文件“Moflash1.1”中,我们可以推测这是一个名为Moflash的软件版本1.1,它很可能是一个集成了鼠标模拟和录制功能的工具。这个工具可能具有以下特性: 1. **录制与回放**:用户可以轻松地开始和停止...

    robot模拟人文件自动下载和上传

    综上所述,实现"robot模拟人文件自动下载和上传"涉及到多方面的技术知识,包括但不限于Windows API的使用、事件模拟、浏览器自动化、网络请求、文件操作、异常处理、任务调度以及代码结构设计。通过熟练掌握这些技能...

    用“时空淘气包”模拟WINDOWS系统桌面 演示说明

    总的来说,“时空淘气包”提供了一种创新的方式,通过Web技术模拟Windows桌面,使得用户可以在不离开浏览器的情况下,享受接近于操作系统级别的交互体验。这种方式对于在线教育、远程协作或开发跨平台的桌面模拟应用...

    vbs控制浏览器操作,自动化最简代码

    VBS(Visual Basic Script)是一种基于Visual Basic的脚本语言,常用于Windows系统中的自动化任务。在本场景中,我们关注的是如何使用VBS来控制浏览器操作,实现自动化。这通常涉及到与Web浏览器的交互,如打开网页...

    Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python).pdf

    在Windows操作系统上,它是模拟鼠标点击和键盘事件的关键。为了使用pywin32,首先需要确保你的Python环境已经正确安装并且与你的Python版本匹配。例如,Python 3.6.2需要安装对应版本的pywin32(如pywin32-221.win-...

    一款超炫的后台,Ext模拟Windows桌面 +.rar

    另一个文件“一款超炫的后台,Ext模拟Windows桌面.rar”是整个后台系统的源代码或预览版本,包含了实现Windows桌面模拟的所有必要文件和资源。 总的来说,这个项目利用了ExtJS的灵活性和功能性,创建了一个高度仿真...

    几种模拟键盘按键的方法

    模拟键盘按键能够使计算机程序模拟人手在物理键盘上的操作,从而实现自动输入或者控制其他应用程序的行为。以下将详细介绍模拟键盘按键的相关知识点。 1. **API调用** 在不同的操作系统中,模拟键盘事件通常需要...

    用于VRML文件浏览、显示,BS-Contact、cortona3d-x64浏览器插件

    为了在网页上查看这些VRML文件,通常需要依赖特定的浏览器插件。本文将详细介绍“BS-Contact”和“Cortona3D”这两款64位浏览器插件,以及如何使用它们来浏览和显示VRML内容。 首先,BS-Contact是一款强大的VRML和...

    模拟鼠标和键盘操作的钩子程序

    常见的方法是使用API函数如Windows的`SendInput`,它可以模拟按键的按下和释放,实现字符输入、快捷键触发等功能。这对于自动化数据输入、游戏自动化、甚至绕过某些安全限制都有可能。 4. **回放功能**:程序具备...

    电脑WAP网浏览器wap wap

    8. **多平台兼容**:考虑到电脑操作系统多样,一个好的电脑WAP网浏览器应该能在Windows、Mac OS X以及Linux等不同系统上运行。 9. **更新和维护**:由于WAP标准和技术的演变,浏览器也需要定期更新以保持兼容性和...

    模拟鼠标点击

    综上所述,模拟鼠标点击是IT领域中一项实用的技术,它通过编程实现了人手在电脑上的交互操作,大大提高了工作效率和自动化水平。理解并掌握这一技术,对于开发者来说,无论是进行测试还是构建自动化解决方案都极具...

    c#百度关键词点击源码(外部浏览器操作)

    描述中提到的“浏览器外部操作”意味着这个C#程序不会直接嵌入到浏览器内部,而是作为一个独立的应用程序运行,通过API或者模拟键盘鼠标操作与浏览器进行交互。这种方式可能包括使用自动化测试框架如Selenium,或者...

    desktopSimulation:一个在浏览器中模拟桌面的Web界面。 它将具有图标,文件夹,窗口,菜单以及创建新文本文件以向所有者发送消息的功能

    "桌面Simulation"是一个创新的Web应用,它利用JavaScript、CSS和可能的一些其他技术,为用户在浏览器中构建了一个模拟真实操作系统桌面的环境。这个项目旨在提供一个交互式的、仿真的桌面体验,用户可以在其中看到...

    控制IE浏览器 及获取鼠标位置句柄

    在本例中,"获取鼠标位置句柄"可能是指获取鼠标在屏幕上的位置,并且可能涉及到与特定窗口的交互。我们可以使用Windows API函数`GetCursorPos`来获取鼠标的当前位置,然后使用`FindWindow`或`FindWindowEx`来找到...

    winfrom_cefSharp实现淘宝模拟点击事例 .zip

    【描述】提到的"winform_cefSharp实现淘宝模拟点击事例",意味着这个项目的核心目标是创建一个自动化工具或者脚本,能够在Windows环境下通过图形界面模拟用户在淘宝上的交互行为,例如浏览商品、添加购物车、下单等...

Global site tag (gtag.js) - Google Analytics