ドラッグアンドドロップのためにjavascriptのevent.dataTransferを使ってネイティブオブジェクトを渡す方法を理解しようとしています。私はCMSのフロントエンドエディタの部分を書いています。ユーザーが要素(ファイルから画像、HTMLのスニペット、まさにあらゆるものまでさまざまな種類の要素)をドラッグ&ドロップできるようにしたいと考えています。だから私は実際のオブジェクトを渡したいので、それをレンダリングする方法を知るために必要なことを指定するためにデータを添付することができます。dataTransferでオブジェクトを渡す
jQueryの.data()を使用してページ上のオブジェクトにオブジェクトをアタッチし、セレクタ文字列をsetDataに渡すだけですが、特にそのハックは楽しめません。
これは、jQuery UIのドラッグ可能/ドロップ可能で解決できる可能性があります(そして私は完全にライブラリを使用することに反対していません)が、dropzoneはiframe内にあるので、これは実際には最新のjQuery UI (1.10.2)。また、可能であればネイティブで行うことを強くお勧めします。このアプリにはすでに十分なライブラリがあります。これが失敗した理由を今すぐhttp://jsfiddle.net/AHnh8/
var foo = {foo: "foo", bar: "bar"};
$dragme.on("dragstart", function(e) {
e.originalEvent.dataTransfer.setData("foo", foo);
});
$dropzone.on("dragenter", function(e) { e.preventDefault(); });
$dropzone.on("dragover", function(e) { e.preventDefault(); });
$dropzone.on("drop", function(e) {
console.log(e.originalEvent.dataTransfer.getData("foo")); // [Object object]
console.log(typeof e.originalEvent.dataTransfer.getData("foo")); // string
});
は、スペックを読んだ後、私は完全に理解して:
は、ここで問題です。私が理解できないことは、最終的に私が望むものを達成する方法です。あなたは、文字列のみを保存することができますので、
おかげ
は、私はあなただけ受信したときにそれとJSON.parseデータを送信する前にデータを文字列化する必要があると思います。 – Deee