繁体   English   中英

从父框架中拖动一项并将其拖放到子iframe中的可放置对象中

[英]Drag an item from parent frame and drop it in a droppable object in child iframe

我试图将一个项目从父框架拖动到一个可放置元素中,但在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>
<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>

不幸的是,框架是单独的窗口对象,因此您将无法将对象从一个DOM树拖到另一个窗口的DOM树中。 网页基于窗口DOM的当前状态呈现。 当您拖动元素时,DOM会根据元素的样式发出重新绘制的信号,并且网页将重新渲染(在拖动的情况下,顶部和左侧样式属性通常是罪魁祸首)。

当页面上有两个框架(或窗口对象)(在这种情况下一个在另一个框架之内)时,您还将拥有此DOM对象的两个完全独立的实例,因此,这是行为。 当一个在另一个内部并且一起执行一个更大的DOM渲染时,DOM不协作。 它们是完全不同的作用域(包括JavaScript),并且出于某种原因(主要是出于安全性考虑,因为您可以将外部网站加载到嵌入式window / iFrame对象中),因此采用这种方式进行设计。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM