1

親フレームからドロップ可能な要素にアイテムをドラッグしようとしていますが、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>
4

1 に答える 1

2

残念ながら、フレームは個別のウィンドウオブジェクトであるため、あるDOMツリーから別のウィンドウのDOMツリーにオブジェクトをドラッグすることはできません。Webページは、ウィンドウのDOMの現在の状態に基づいてレンダリングされます。要素をドラッグすると、DOMが再描画を通知し、要素のスタイルに基づいてWebページが再レンダリングされます(ドラッグの場合、通常、上部と左側のスタイルプロパティが原因です)。

ページに2つのフレーム(またはウィンドウオブジェクト)がある場合(このシナリオでは一方が他方の内側にある場合)、このDOMオブジェクトの2つの完全に別個のインスタンスもあるため、動作します。DOMは、一方が他方の内部にある場合は連携せず、1つの大きなDOMレンダリングを一緒に実行します。それらは完全に異なるスコープ(JavaScriptを含む)であり、理由のためにこのように設計されています(外部のWebサイトを埋め込みウィンドウ/ iFrameオブジェクトにロードできるため、主にセキュリティのためです)。

于 2013-03-26T21:14:44.560 に答える