2011-07-25 20 views
10

Webアプリケーションのドラッグアンドドロップ機能をWebページの要素とiframeの要素の間に実装する必要があります(技術的な理由から、iframeについて不平を言う前に、それはオプションではない)。要素をドラッグしてiframeにドロップします。ドロップ可能領域の座標が間違っていて、衝突が間違っています

私はページ内に、iframe内のターゲットのドロップ可能な要素にドラッグできる要素を持っています。

両方のライブラリが同じ問題を抱えていますが、ターゲット要素(ドロップ可能なターゲット)の座標が誤って解釈されていて、両方のライブラリで考慮されているドロップ領域が間違っていて、ドラッグされたオブジェクトとドロップされた要素との間の衝突は完全に台無しになる。それは、図書館が、効果的な場所から別の場所に配置された落下可能な要素を見るようなものです。

これはiframeがページの左上、中央に配置されていないためだと思います。私はこの問題について不平を言う多くの人を読んでいて、iframeが左上に置かれていれば問題が解消されたためだと思います。誰かが、dropX可能要素の座標は、clientXとclientYの代わりにscreenXとscreenYに基づいて計算されるかもしれないと提案しています。これは問題が原因かもしれません。要素がiframeの内側にあることを考慮せず、 iframeの外側の他の要素の間。

ライブラリの機能を使用してこれを直接修正する方法はないようだから、実際にはすべてのライブラリを試してみる時間がないので、修正(パッチ適用)問題の図書館の内部機能。

質問は以下のとおりです。

1)誰かが前にこの動作が発生し、問題を解決するために管理していましたか?または、これを完璧に行うことができる図書館はありますか?

2)ライブラリ自体のメソッドと機能を使用してこの問題を解決する方法はありますか?もしそうでなければ、

3)誰かが最後の極端なオプションとしてそれを修正することができるように、ライブラリのどの部分がドロップ可能な領域の座標を計算しているか知っていますか?

ご協力いただきありがとうございます。ご協力いただければ幸いです!


EDIT

このバイオリンは、問題を示します。赤い四角形内の緑色の四角形(iframe内にある)を移動してみてください。 2つの四角形の衝突が間違っていることがわかります。

http://jsfiddle.net/DQdZ9/23/

+0

少し明確にするために、要素をメインのWebページからiframe内の別の要素にドラッグしています。そして、iframe内のドロップポイントが誤って計算されていることを除いて、正常に動作するようです。そうですか? – jwatts1980

+0

@ jwatts1980まさに、私は、iframeの内側にあるターゲット要素(droppable)の中のページから要素をドラッグアンドドロップできます。それは動作しますが、ターゲットのドロップ可能な座標が正しくない、表示されたドロップ可能な領域が間違っている、ドロップ可能な要素の座標に対応していません。 –

+0

私は今あなたに従うと思います。あなたは、あなたのための細部がすべて動くようになっているはずの組み込みのdroppableものを使用しています。しかし、失敗しているので、ドロップポイントを計算する独自のロジックを構築するのではなく、ドロップポイントを計算する組み込みメソッドを編集する方が簡単だと考えています。 – jwatts1980

答えて

7

これは「特効薬」ではありませんが、私は先に行くと答えとしてこれを投稿しますが、私はそれがあなたのために持っているどのくらいの値がわかりません。私はjQuery UIの主要な機能を探していました。 $.ui.ddmanager(ドラッグアンドドロップマネージャー)にあり、機能はprepareOffsetsです。この行:

m[i].offset = m[i].element.offset(); 

要素が実際にドロップされたときのオフセットを設定しているようです。これは、削除可能な要素がiframeの子であるかどうかに基づいて、結果のオフセットを調整するための手助けとなるかもしれません。

さらに、draggableとdroppableが互いに交差しているかどうかを確認するためのロジックを実行する別の関数$.ui.intersectがあります。

私は最新のjQuery UIをリリースしています。ファイルはjquery-ui-1.8.14.custom.jsオンライン2012-2029にあります。 1つの削除可能なファイル自体を取得した場合、jquery.ui.droppable.js、それは203〜220行目です。これらはdevファイルであり、minファイルではありません。

+0

あなたの努力ありがとう!報告された機能を備えた演奏を準備しました。 http://jsfiddle.net/DQdZ9/35/ –

+4

これをチェックすると、オフセットが変更された後の方がはるかに優れているようです...おそらくこれが行く方法です! http://jsfiddle.net/DQdZ9/48/ –

+0

これははるかに良く見えています。ニース。 – jwatts1980

関連する問題