`
rain_08
  • 浏览: 7197 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

拖拽一个iframe中的div 在另一个iframe页面中显示

    博客分类:
  • js
阅读更多
在一个页面中包含两个iframe iframe包含的页面中有div元素 实现拖动div在另外一个iframe中实现相同的拖拽效果
event.html主页面
有几个地方需要注意:1.要在iframe包含的页面中设置div的绝对位置position:absolute;left:20px;top:20px;
2.js在不同页面调用 这个可以上网搜 比如调用iframe中的dom contentWindow.document
  子页面调用父页面 parent.document.getElementById("parentNodeName");
3.js 事件的处理onmousedown 鼠标按下时事件处理 onmouseup鼠标离开时触发的事件,要在onmousedown事件处理之下触发
用table做了一个布局
<h3>event 动态实现鼠标的拖拽</h3>

<table width="800px" height="400px" border="1" style="border-color:red" align="center">
	<tr>
		<td>
			<iframe src="a.html" id="iframe1" style="width:400px;height:400px;"></iframe>
		</td>
		<td>
			<iframe src="b.html" id="iframe2" style="width:400px;height:400px"></iframe>
		</td>
	</tr>
</table> 

//============a.html
<script type="text/javascript" src="dragging.js">
<div style="width:50px;height:50px;background-color:yellow;cursor:help;position:absolute;left:20px;top:20px" id="div1" onmousedown="divDragging(this,event,true)"></div>

//=============b.html
<script type="text/javascript" src="dragging.js">
  <div style="width:50px;height:50px;background-color:blue;position:absolute;left:20px;top:20px;" id="div2" onmousedown="divDragging(this,event,true)">

//================dragging.js
//obj 当前对象 2.指定event对象 主要是为了兼容ff,true指定是否只能在父级元素中拖拽
function divDragging(obj, e, limit){
		//alert(parent.document.getElementById('iframe').src);
        //alert(e.srcElement.id);
		if(!e) e=window.event;
        var x=parseInt(obj.style.left);
        var y=parseInt(obj.style.top);
        //clientX clientY事件发生时 鼠标的横纵坐标,他们的值是相对于包容窗口的左上角生成的
        var x_=e.clientX-x;
        var y_=e.clientY-y;
        
        if(document.addEventListener){//ff浏览器 注册事件监听器
            document.addEventListener('mousemove', divmove, true);//两个参数 1。事件的类型 2.事件处理的函数
            document.addEventListener('mouseup', divup, true);
        } else if(document.attachEvent){//ie
            document.attachEvent('onmousemove', divmove);
            document.attachEvent('onmouseup', divup);
        }
        
        divstop(e);    
        divabort(e);
		//alert(e.srcElement.id);
        
        function divmove(e){
            //var evt;
            if(!e)e=window.event;
            
            if(limit){
                var op=obj.parentNode;
                var opX=parseInt(op.style.left);
                var opY=parseInt(op.style.top);
                //offsetWidth相对于原窗口的宽度
                if((e.clientX-x_)<0) return false;
                else if((e.clientX-x_+obj.offsetWidth+opX)>(opX+op.offsetWidth)) return false;
                
                if(e.clientY-y_<0) return false;
                else if((e.clientY-y_+obj.offsetHeight+opY)>(opY+op.offsetHeight)) return false;
                //status=e.clientY-y_;
            }
            
            obj.style.left=e.clientX-x_+'px';
            obj.style.top=e.clientY-y_+'px';
            getResult(e.srcElement.id,e.clientX-x_,e.clientY-y_);
			//getInfo();
            divstop(e);
        }
        function divup(e){
            //var evt;
            if(!e)e=window.event;
            
            if(document.removeEventListener){
                document.removeEventListener('mousemove', divmove, true);
                document.removeEventListener('mouseup', divup, true);
            } else if(document.detachEvent){
                document.detachEvent('onmousemove', divmove);
                document.detachEvent('onmouseup', divup);
            }
            
            divstop(e);
        } 
 
        function divstop(e){
            if(e.stopPropagation) return e.stopPropagation();
            else return e.cancelBubble=true;            
        } 
		//returnValue:一个布尔值属性,设置为false的时候可以组织浏览器执行默认的事件动作,相当于<a href=”#” onclick=”ProcessMethod();return false;” />。

		function divabort(e){
            if(e.preventDefault) return e.preventDefault();//
            else return e.returnValue=false;
        }
		
    }
	function getResult(div,a,b){
		//alert(div+" --"+a+"---"+b);
		var iframeObj1=parent.document.getElementById('iframe1').contentWindow.document;
		var iframeObj2=parent.document.getElementById('iframe2').contentWindow.document;
		//this div对象 指定event对象 主要是为了兼容ff,true 指定是否只能能在父级元素中拖拽
		if('div1'==div.toString()){
			//iframeObj2.getElementById('div2').Class='div1'+','+a+','+b;
			iframeObj2.getElementById('div2').style.left=a+'px';
			iframeObj2.getElementById('div2').style.top=b+'px';
			//alert(iframeObj2.getElementById('div2').id);

		}
		//alert(div.toString());
		if('div2'==div.toString()){
			
			//iframeObj2.getElementById('div2').Class='div1'+','+a+','+b;
			iframeObj1.getElementById('div1').style.left=a+'px';
			iframeObj1.getElementById('div1').style.top=b+'px';
			//alert(iframeObj2.getElementById('div2').id);

		}
		
	}

//小注:chrome浏览器不支持获取iframe节的dom的getElementById方法 chrome调试会出错
分享到:
评论

相关推荐

    div,iframe拖动功能

    Div是用于布局的块级元素,它允许我们将页面划分为多个区域,而iframe(内联框架)则用于在同一个页面中嵌入另一个HTML文档,例如展示外部网站或加载动态内容。 要实现div的拖动功能,我们主要依赖JavaScript(或...

    javascript窗体类似div窗体iframe+div窗体

    IFrame是一种HTML标签,它可以在一个HTML文档中嵌入另一个HTML文档。这使得开发者能够在一个页面中展示多个独立的内容区域,每个区域可以来自不同的源,甚至可以加载动态内容。IFrame常用于实现模块化的设计,如广告...

    主页面实现两个iframe中元素拖动

    在网页设计中,有时我们需要实现跨页面的交互功能,例如在一个主页面中包含两个或多个iframe,让这些iframe中的元素可以被拖动并传递信息。本案例中的"主页面实现两个iframe中元素拖动"就是一个典型的跨iframe交互的...

    javascript写的可拖动的iframe

    在本文中,我们将深入探讨如何使用JavaScript实现一个可拖动的iframe。JavaScript是一种强大的客户端脚本语言,常用于网页交互和动态效果的实现。在这个案例中,我们将关注于利用JavaScript来增强iframe的功能,使其...

    jquery 跨iframe拖拽

    2. **设置拖拽元素**:在主页面或者IFrame中的某个元素(比如一个div)上,我们需要应用`.draggable()`方法,定义拖动行为。例如: ```javascript $('#draggableElement').draggable(); ``` 这将使`#...

    javascript浮动div,可拖拽div,遮罩层(div和iframe实现)

    可拖拽 Div 指的是用户可以手动拖动 Div 在页面中的位置。这一功能通常采用原生 JavaScript 实现。 #### 实现步骤 1. **绑定事件监听器**:为 Div 绑定 `mousedown` 事件,当用户按下鼠标左键时触发。 2. **获取...

    vue中解决拖拽改变存在iframe的div大小时卡顿问题

    在Vue开发过程中,拖拽...总结来说,解决Vue拖拽div卡顿的关键在于创建一个透明遮罩层,并在拖动过程中控制它的显示与隐藏。通过这样的优化,可以显著提高用户在拖拽调整iframe div大小时的体验,使得操作流畅无卡顿。

    js弹出div层模拟alert+(iframe中使用)

    本主题将详细讲解如何使用JavaScript创建一个可移动的`div`层来模拟`alert`功能,并在`iframe`环境中应用。 首先,让我们了解`alert`的基本用法。`alert`是JavaScript内置的一个全局函数,用于显示一个包含指定消息...

    弹出DIV可拖动窗口示例(编辑窗口/iframe/等待/确认)

    3. **iframe**:`iframe`(内联框架)是HTML中的一种元素,可以嵌入另一个网页或应用到当前页面中。在弹出窗口中使用iframe,可以加载外部资源,比如网页、表单、视频或其他互动内容,使弹出窗口具有更多功能,且与...

    Div iFrame 做的面向对象小窗口

    `Div` 是一个布局容器,而 `iFrame` 则用于在网页中嵌入其他网页或者内容。当我们谈论"Div iFrame 做的面向对象小窗口"时,我们可以理解为利用这两种技术创建一种可交互、模块化的界面组件。 1. **Div(Division)*...

    bootStarp可视化框架实现拖动iframe

    例如,可以将iframe放入一个`.col`类的div中,然后使用jQuery UI的拖放功能调整其在页面上的位置。 6. **响应式设计**:考虑到移动设备的使用,要确保在不同屏幕尺寸下iframe仍能正常工作。Bootstrap的栅格系统支持...

    JQ UI 拖拽DIV插件

    本文将详细介绍JQ UI中的拖拽功能,以及如何实现一个兼容性高的拖拽DIV插件。 首先,让我们了解JQ UI的拖拽功能。在JQ UI中,`draggable()` 是一个核心方法,用于将元素变为可拖动的。通过调用此方法并传入相应的...

    外部滚动条控制iframe

    在网页设计中,iframe(Inline Frame)是一种常用的HTML元素,用于在当前文档内嵌入另一个HTML文档。然而,默认情况下,iframe内的滚动行为是独立于主页面的,即其滚动条无法通过外部元素进行直接控制。但在某些场景...

    div+iframe弹出窗口:可最大化、最小化,可拖拽,带遮罩功能

    div+iframe做出的弹出窗口,效果等同于模态窗口。弹出窗口可最大化、最小化,可拖拽。带遮罩功能。 解决替换模态窗口,避免模态调模态出现的一系列问题:session丢失,提交返回,调父类方法层级多了或者多页面调的...

    div 最上层锁定页面

    标题“div最上层锁定页面”涉及到的是网页布局和前端开发中的一个常见需求,即让一个div元素始终显示在页面的最上层,即使其他内容滚动也不会影响到它。这通常用于创建弹出窗口、提示框或者固定导航栏等元素。这种...

    js 弹出窗口 弹出div window 支持遮罩、拖动、嵌入页面、换肤等实用功能

    在本文中,我们将深入探讨如何利用JavaScript实现一个弹出div窗口,包括支持遮罩、拖动、嵌入页面和换肤等功能。 首先,让我们了解“弹出窗口”或“弹出层”的概念。在网页设计中,弹出窗口通常指的是不依赖浏览器...

    js实现拉伸拖动iframe的具体代码

    左边iframe放树目录,右边的iframe放index页。...提示:拖动的秘密就在filter:alpha(opacity=0)这一句 代码如下: &lt;html&gt;[removed] var mouseX = 0; var mouseY = 0; var w=5; function div

    点击弹出窗口网页背景变暗且不可点的效果(二):iframe实现

    在Web开发中,`iframe`(Inline Frame)是一种嵌入其他HTML文档的标签,它允许开发者在一个网页中展示另一个网页的内容。在本案例中,`iframe`可能被用来创建弹出窗口,同时背景变暗并禁用交互是通过CSS和JavaScript...

Global site tag (gtag.js) - Google Analytics