本发明专利技术涉及本一种不同域名下文件相互拖拽的方法;该方法通过判断游览器是否支持跨域数据通信,如果支持,则将鼠标按下网页元素绑定的数据传递到目标节点;如果不支持,则通过代理的方式将所述数据传递到目标节点窗口;本发明专利技术实现了在游览器中两个不同域名下的文件只要直接拖拽,即可完成相应的数据传递,可以广泛用在各开放平台中,给不同域名下的第三方应用直接提供通讯的技术基础,可以在不同的应用领域直接传递参数,调用函数,大大减少了繁琐的操作步骤,有效的降低了上传下载所消耗的流量带宽,提高了数据传输的效率。本发明专利技术可以应用于富客户端的internet应用中,帮助富客户端应用之间减少与服务端直接的通讯成本,从而降低运营成本,提高工作效率。
【技术实现步骤摘要】
本专利技术属于计算机网络信息传输领域,具体涉及;该方法通过跨域文件处理技术实现了在不同域名下文件相互拖拽。
技术介绍
在日常的工作生活中,当你需要把几封E-MAIL电子邮件里面的附件经过筛选后,放到一封邮件中发给其他人时,你一般会这样做打开每一封邮件,把需要发送的附件下载到本地硬盘。根据附件的容量大小,你需要等上几分钟甚至几十分钟才能下载完。然后,你需要新建一封邮件,再要几分甚至几十分钟把附件一一上传上去,然后写上正文后发送出去;带来的问题是时间长、操作复杂度,网络传输的开销大。
技术实现思路
本专利技术的目的是针对上述问题提出的技术方案,该方案通过跨域文件处理技术实现了在不同域名下文件相互拖拽。为了实现上述目的,本专利技术的技术方案是,从游览器中打开一个网页主页面窗口,在主页面窗口中至少再打开有一个子窗口,所述窗口之间不同域名,所述不同域名下文件相互拖拽的方法的步骤包括 a.在窗口中侦听鼠标针对网页元素的按下事件,当按下事件发生时,记录鼠标按下的坐标位置,鼠标按下标志自动为真; b.继续侦听鼠标按下窗口中文档的鼠标拖拽移动事件,同时判断鼠标按下标志是否继续为真,当鼠标按下标志不为真时,停止侦听窗口中文档的鼠标拖拽移动事件返回步骤a ; c.当鼠标按下标志续为真时,判断是否有跨窗口鼠标拖拽事件发生;如果没有发生返回步骤b ; d.如果有发生,在主页面窗口创建一个遮罩,遮罩设置为透明,遮罩遮住主页面窗口中的子窗口,在主页面窗口中创建鼠标拖拽辅助对象; e.循环判断鼠标拖拽辅助对象是否离开按下窗口进入另一个窗口中; f.侦听辅助对象在另一窗口中的落入点,确定拖拽的目标节点,并把之前鼠标按下网页元素绑定的数据传递到目标节点; 其中,所述数据传递的过程包括 g.判断所述游览器是否支持跨域数据通信; h.如果支持,则将鼠标按下网页元素绑定的数据传递到目标节点; i.如果不支持,则在所述前一窗口内创建一个代理窗口,所述代理窗口与目标节点窗口同域,将鼠标按下网页元素绑定的数据存放在代理窗口的name属性里,通过javascript变量或函数调用的方式将所述数据直接传递到目标节点窗口。所述拖拽辅助对象图像表示的是鼠标按下子窗口中的所述鼠标拖拽对象。所述步骤c中当鼠标按下标志续为真时,所述方法进一步包括记录当前鼠标位置坐标,当所述步骤a中鼠标按下的坐标位置与当前鼠标位置距离小于设定值时返回步骤B o所述设定值是四至六个像素点。所述判断所述游览器是否支持跨域数据通信是判断游览器window.postMessage的值是否为未定义,如果是未定义则不支持跨域数据通信,如果不是未定义则为支持跨域数据通信;当支持跨域数据通信时数据传递方调用数据接收方的window.postMessage方法传递数据内容。本专利技术产生的有益效果是本专利技术实现了在游览器中两个不同域名下的文件只要直接拖拽,即可完成相应的数据传递,可以广泛用在各开放平台中,给不同域名下的第三方应用直接提供通讯的技术基础,可以在不同的应用领域直接传递参数,调用函数,大大减少了繁琐的操作步骤,有效的降低了上传下载所消耗的流量带宽,提高了数据传输的效 率。本专利技术还可以应用于富客户端的internet应用中,可以帮助富客户端应用之间减少与服务端直接的通讯成本,从而降低运营成本,提高工作效率。下面结合附图实施例对本专利技术作一详细描述。附图说明图I为传统两个邮件附件传递方法示意 图2为两个不同域窗口不意 图3为代理方法数据传递窗口示意图I ; 图4为代理方法数据传递窗口示意图2 ; 图5为消息方式数据传递窗口示意 图6为消息方式两个窗口函数传递示意图。具体实施例方式,所述方法是基于网络游览器而实现的不同域名窗口下文件相互拖拽的方法,该方法首先在游览器中打开一个网页主页面窗口,在主页面窗口中至少再打开有一个子窗口,所述网页主页面窗口和子窗口之间不同域名,所述不同域名下文件相互拖拽的方法的步骤包括 a.在窗口中侦听鼠标针对网页元素的按下事件,当按下事件发生时,记录鼠标按下的坐标位置,鼠标按下标志自动为真; b.继续侦听鼠标按下窗口中文档的鼠标拖拽移动事件,同时判断鼠标按下标志是否继续为真,当鼠标按下标志不为真时,停止侦听窗口中文档的鼠标拖拽移动事件返回步骤a ; c.当鼠标按下标志续为真时,判断是否有跨窗口鼠标拖拽事件发生;如果没有发生返回步骤b ; d.如果有发生,在主页面窗口创建一个遮罩,遮罩设置为透明,遮罩遮住主页面窗口中的子窗口,在主页面窗口中创建鼠标拖拽辅助对象; e.循环判断鼠标拖拽辅助对象是否离开按下窗口进入另一个窗口中; f.侦听辅助对象在另一窗口中的落入点,确定拖拽的目标节点,并把之前鼠标按下网页元素绑定的数据传递到目标节点;其中,所述数据传递的过程包括 g.判断所述游览器是否支持跨域数据通信; h.如果支持,则将鼠标按下网页元素绑定的数据传递到目标节点; i.如果不支持,则在所述前一窗口内创建一个代理窗口,所述代理窗口与目标节点窗口同域,将鼠标按下网页元素绑定的数据存放在代理窗口的name属性里,通过javascript变量或函数调用的方式将所述数据直接传递到目标节点窗口。实施例中,所述拖拽辅助对象图像代表了鼠标按下子窗口中的所述鼠标拖拽对象,其形状相同给人个感觉就是鼠标拖拽对象。实施例中,所述步骤c中当鼠标按下标志续为真时,所述方法进一步包括记录当 前鼠标位置坐标,当所述步骤a中鼠标按下的坐标位置与当前鼠标位置距离小于设定值时返回步骤a,其中所述设定值是四至六个像素点。实施例中,所述判断所述游览器是否支持跨域数据通信是判断游览器window.postMessage的值是否为未定义,如果是未定义则不支持跨域数据通信,如果不是未定义则为支持跨域数据通信;当支持跨域数据通信时数据传递方调用数据接收方的window.postMessage方法传递数据内容。以下是针对上述实施例的详细说明以及具体举例。通常情况下,一个网页包含一个窗口对象(window),窗口对象包含一个文档对象(document),文档对象包含若干个html dom元素(node)。Node元素(也称节点)在某些情况下也嵌套其他window对象,比如frame或iframe节点。一般的web页中的拖拽是在一个窗口文档内的操作,当需要在两个不同的窗口内拖拽的时候,甚至是两个不同的域名下窗口之间拖拽的时候就满足不了。因为不同的文档之间鼠标事件是没法传播的,其次不同域名下的窗口之间的javascript对象,变量,函数等是禁止互相访问的。如图I所示的两个不同域的窗口 I和窗口 2中,在窗口 I中按下鼠标,拖住node到窗口 2中的target时弹起鼠标按键完成拖拽操作。要做到这点,需要克服几个web标准的限制 I.不同文档内的dom对象是禁止引用或拷贝的。2. 不同域名下的窗口都是一个独立的沙箱,里面的javascript变量,函数或对象是禁止访问的。要解决上面两个问题,首要任务接是要先解决掉跨域通信的问题。解决了跨域通信的问题后,就解决了第2点。有了第2点,我们就能以其他形式来替代dom对象的引用或拷贝。目前互联网中跨域通信一般指的是跨域获取远程数据的问题,并不是本文档来自技高网...
【技术保护点】
【技术特征摘要】
【专利技术属性】
技术研发人员:徐天工,顾荣胜,
申请(专利权)人:北京亿中邮信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。