我正在尝试将项目从父框架拖动到droppable元素中,但是在iframe中。当在同一帧中的droppable元素上放置项目时,它可以工作,但是当跨框架尝试它时,它什么都不做。
我试图解决这个问题很多次但没有成功。
以下是父框架的代码:
<html>
<head>
<title></title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
<style>
#draggable { width: 100px; height: 100px; padding: 0.5em; float: left; margin: 10px 10px 10px 0; }
#droppable { width: 150px; height: 150px; padding: 0.5em; float: left; margin: 10px; }
</style>
<script>
$(function() {
$( "#draggable" ).draggable();
$( "#droppable" ).droppable({
drop: function( event, ui ) {
$( this )
.addClass( "ui-state-highlight" )
.find( "p" )
.html( "Dropped!" );
}
});
});
</script>
</head>
<body>
<div id="draggable" class="ui-widget-content">
<p>Drag me to my target</p>
</div>
<div id="droppable" class="ui-widget-header">
<p>Drop here</p>
</div>
<iframe src="P1.html" width = "500px" height = "500px">
</iframe>
</body>
</html>
以下是iframe的代码:
<html>
<head>
<title></title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
<style>
#draggable { width: 100px; height: 100px; padding: 0.5em; float: left; margin: 10px 10px 10px 0; }
#droppable { width: 150px; height: 150px; padding: 0.5em; float: left; margin: 10px; }
</style>
<script>
$(function() {
$( "#draggable" ).draggable();
$( "#droppable" ).droppable({
drop: function( event, ui ) {
$( this )
.addClass( "ui-state-highlight" )
.find( "p" )
.html( "Dropped!" );
}
});
});
</script>
</head>
<body>
<div id="draggable" class="ui-widget-content">
<p>Drag me to my target</p>
</div>
<div id="droppable" class="ui-widget-header">
<p>Drop here</p>
</div>
</body>
</html>
答案 0 :(得分:2)
不幸的是,框架是单独的窗口对象,因此您无法将对象从一个DOM树拖动到另一个窗口的DOM树中。网页基于窗口DOM的当前状态呈现。当您拖动元素时,DOM会发出重绘信号,并根据元素的样式重新渲染网页(在拖动的情况下,顶部和左侧样式属性通常是罪魁祸首)。
如果页面上有两个框架(或窗口对象)(在这种情况下,一个在另一个框架内),那么您还有两个完全独立的DOM对象实例,因此也就是它的行为。当一个人在另一个人内部并且一起执行一个更大的DOM渲染时,DOM不会合作;它们是完全不同的范围(包括JavaScript),并且它是出于某种原因设计的(主要是为了安全,因为您可以将外部网站加载到嵌入式窗口/ iFrame对象中)。