iframe の外にドラッグ可能なものと、その中にドロップ可能なターゲットがあります。ここでは、src 属性によって読み込まれる HTML のスニペットを含む iframe を示しています。
<div id="draggables">
<img src="drag-me.gif">
</div>
<iframe src="iframe-src.html" id="iframe">
<!-- HTML gubbins -->
<div id="droppable"> </div>
<!-- More HTML gubbins -->
</iframe>
私はいくつかのjQuery(ドラッグ可能/ドロップ可能なUI)を使用して何かを行います:
$("#iframe").load(function() {
var $this = $(this);
var contents = $this.contents();
contents.find('#droppable').droppable({
drop: function (event, ui) { alert('dropped'); }
});
$('#draggables img').draggable();
});
ドラッグ可能なものはドラッグ可能になり、ドロップ可能なものは正常にドロップ ターゲットになります。問題は、ドロップ エリアのランディング ゾーンが画面に表示される場所ではないことです。つまり、ドラッグ可能オブジェクトがターゲット自体ではなく、ドロップ ターゲットの上のどこかにドロップされたときにアラートが発生します。
私が行ったいくつかのテストでは、ターゲットが画面上にある場所と jQuery が認識している場所の違いは、ページ上の iframe の垂直位置に関連していることが示唆されましたが、直接的な相関関係は見つかりませんでした。この問題が誰かによって調査され、おそらく解決されたかどうかを知っている人はいますか?
それができない場合、iframe を使用せずに、また 2 つのページの構造とスタイルが互いに干渉することなく、外部 HTML ファイルを自分のページにロードできる方法を誰かが提案できますか? 内部ページを直接ロードし、javascript を使用してその周りにページ コントロールを描画することを検討しています。
TIA アルトレウス