2012-01-20 23 views
4

jQueryは、プログラムによってイベントをリッスンしているDOM要素のイベントをトリガーできることを知っています。たとえば$el.click()は、$elを物理的にマウスでクリックすることなく$elにクリックイベントをトリガーします。JavaScriptを使用したドラッグ・アンド・ドロップのエミュレート

は、二つのDOM要素dom1dom2を考えると、それは可能プログラムdom1がドラッグ可能であり、dom2はjQueryのUIを使用して、ドロップ可能であるjQueryの(又はバニラのJavaScript)を用いdom2dom1からドラッグアンドドロップをエミュレートすることです。

注:これを行う理由は、自動UIテストを構築するためです。

+0

「トリガー・ドラッグ・アンド・ドロップ」は少しあいまいです:それはハロー 'はページから削除されたと主張し、次の

を使用することは非常に簡単です。私はあなたがドラッグアンドドロップスタイルのインターフェイスを作成したいと思うが、あなたは "[存在しない]組み込みのドラッグ&ドロップイベントを使用したい"という意味ですか? – Bojangles

+0

@JamWaffles:私は質問を編集しました。私はドラッグ可能であり、落書き可能な要素を持っています。 JavaScriptコードを記述するだけで、マウスを使わずにこれらの要素をドラッグ・アンド・ドロップすることができます。 – Randomblue

答えて

2

jQuery.triggerはHTMLイベントを発生させないことを覚えておく必要があります。つまり、.clickを呼び出すとリンクが続くことはありません。これは、jQueryで設定されたイベントをトリガするだけです。

http://jupiterjs.com/news/syn-a-standalone-synthetic-event-libraryは、HTMLイベントを真に模倣するライブラリです。

Syn.click({},'hello') 
    .type('Hello World') 
    .delay()   //waits 600ms seconds by default 
    .drag($('#trash') , function() { 
    ok($('#hello').length == 0, "removed hello") 
}); 
0

私は普通のドラッグ・ドロップで複雑なもののためにjquery.ui使用: http://jqueryui.com/demos/draggable/

+0

私はこれが私の質問に答えるとは思わない。私はすでにドラッグ可能でありドロップ可能な要素を持っています。手動で(マウスで)行なわずに 'drag'と' drop'イベントを引き起こしたいと思います。 – Randomblue

+0

@Randomblueあなたは既にjQueryのUIを使用していますか、別のプラグインですか?いずれにしても、コールバック関数と関連ドキュメントが必要です。表示されていない場合は、プラグインを自分で拡張/パッチするか(Githubなどの場合)、または別のプラグインを使用することができます。 – Bojangles

+0

あなたは実際に要素上の動きを別のものにエミュレートするアニメーションの後にいるのでしょうか?もしそうなら、これはユーザーのやりとりと何をするのでしょうか? –

1

youreのUIを使用している場合、ドラッグ可能な行動上のイベントdragstartdragdragstopがあります。 jQuery.trigger()を他のイベントと同じようにプログラムで呼び出すことができるはずですが、手作業でeventインスタンスを操作する必要があります。何らかの方法で、アイテムをドロップする座標を手動で入力すると思います。なぜあなたはそれをやりたいのですか?

+1

私はUIテストを書こうとしています。 – Randomblue

+0

Ahhh ...今はすべて意味があります - これはあなたの質問のUIテスト用です:-)あなたはどのテストフレームワークを使用していますか? – prodigitalson

+1

私はSelenium WebDriverを使用していますが、ドラッグアンドドロップには欠点があります。 – Randomblue

関連する問題