在一个页面中包含两个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(内联框架)则用于在同一个页面中嵌入另一个HTML文档,例如展示外部网站或加载动态内容。 要实现div的拖动功能,我们主要依赖JavaScript(或...
IFrame是一种HTML标签,它可以在一个HTML文档中嵌入另一个HTML文档。这使得开发者能够在一个页面中展示多个独立的内容区域,每个区域可以来自不同的源,甚至可以加载动态内容。IFrame常用于实现模块化的设计,如广告...
在网页设计中,有时我们需要实现跨页面的交互功能,例如在一个主页面中包含两个或多个iframe,让这些iframe中的元素可以被拖动并传递信息。本案例中的"主页面实现两个iframe中元素拖动"就是一个典型的跨iframe交互的...
在本文中,我们将深入探讨如何使用JavaScript实现一个可拖动的iframe。JavaScript是一种强大的客户端脚本语言,常用于网页交互和动态效果的实现。在这个案例中,我们将关注于利用JavaScript来增强iframe的功能,使其...
2. **设置拖拽元素**:在主页面或者IFrame中的某个元素(比如一个div)上,我们需要应用`.draggable()`方法,定义拖动行为。例如: ```javascript $('#draggableElement').draggable(); ``` 这将使`#...
可拖拽 Div 指的是用户可以手动拖动 Div 在页面中的位置。这一功能通常采用原生 JavaScript 实现。 #### 实现步骤 1. **绑定事件监听器**:为 Div 绑定 `mousedown` 事件,当用户按下鼠标左键时触发。 2. **获取...
在Vue开发过程中,拖拽...总结来说,解决Vue拖拽div卡顿的关键在于创建一个透明遮罩层,并在拖动过程中控制它的显示与隐藏。通过这样的优化,可以显著提高用户在拖拽调整iframe div大小时的体验,使得操作流畅无卡顿。
本主题将详细讲解如何使用JavaScript创建一个可移动的`div`层来模拟`alert`功能,并在`iframe`环境中应用。 首先,让我们了解`alert`的基本用法。`alert`是JavaScript内置的一个全局函数,用于显示一个包含指定消息...
3. **iframe**:`iframe`(内联框架)是HTML中的一种元素,可以嵌入另一个网页或应用到当前页面中。在弹出窗口中使用iframe,可以加载外部资源,比如网页、表单、视频或其他互动内容,使弹出窗口具有更多功能,且与...
`Div` 是一个布局容器,而 `iFrame` 则用于在网页中嵌入其他网页或者内容。当我们谈论"Div iFrame 做的面向对象小窗口"时,我们可以理解为利用这两种技术创建一种可交互、模块化的界面组件。 1. **Div(Division)*...
例如,可以将iframe放入一个`.col`类的div中,然后使用jQuery UI的拖放功能调整其在页面上的位置。 6. **响应式设计**:考虑到移动设备的使用,要确保在不同屏幕尺寸下iframe仍能正常工作。Bootstrap的栅格系统支持...
本文将详细介绍JQ UI中的拖拽功能,以及如何实现一个兼容性高的拖拽DIV插件。 首先,让我们了解JQ UI的拖拽功能。在JQ UI中,`draggable()` 是一个核心方法,用于将元素变为可拖动的。通过调用此方法并传入相应的...
在网页设计中,iframe(Inline Frame)是一种常用的HTML元素,用于在当前文档内嵌入另一个HTML文档。然而,默认情况下,iframe内的滚动行为是独立于主页面的,即其滚动条无法通过外部元素进行直接控制。但在某些场景...
div+iframe做出的弹出窗口,效果等同于模态窗口。弹出窗口可最大化、最小化,可拖拽。带遮罩功能。 解决替换模态窗口,避免模态调模态出现的一系列问题:session丢失,提交返回,调父类方法层级多了或者多页面调的...
标题“div最上层锁定页面”涉及到的是网页布局和前端开发中的一个常见需求,即让一个div元素始终显示在页面的最上层,即使其他内容滚动也不会影响到它。这通常用于创建弹出窗口、提示框或者固定导航栏等元素。这种...
在本文中,我们将深入探讨如何利用JavaScript实现一个弹出div窗口,包括支持遮罩、拖动、嵌入页面和换肤等功能。 首先,让我们了解“弹出窗口”或“弹出层”的概念。在网页设计中,弹出窗口通常指的是不依赖浏览器...
左边iframe放树目录,右边的iframe放index页。...提示:拖动的秘密就在filter:alpha(opacity=0)这一句 代码如下: <html>[removed] var mouseX = 0; var mouseY = 0; var w=5; function div
在Web开发中,`iframe`(Inline Frame)是一种嵌入其他HTML文档的标签,它允许开发者在一个网页中展示另一个网页的内容。在本案例中,`iframe`可能被用来创建弹出窗口,同时背景变暗并禁用交互是通过CSS和JavaScript...