我知道jQuery可以以編程方式觸發正在監聽這些事件的DOM元素上的事件。例如,$el.click()
將觸發$el
上的點擊事件,而不必用鼠標物理地點擊$el
。使用JavaScript模擬拖放
給定兩個DOM元素dom1
和dom2
,是否有可能以編程模擬從dom1
使用jQuery(或香草的JavaScript)拖動和放下到dom2
,其中dom1
是拖動和dom2
是可投放使用jQuery UI。
注意:我想這樣做的原因是構建自動化的UI測試。
我知道jQuery可以以編程方式觸發正在監聽這些事件的DOM元素上的事件。例如,$el.click()
將觸發$el
上的點擊事件,而不必用鼠標物理地點擊$el
。使用JavaScript模擬拖放
給定兩個DOM元素dom1
和dom2
,是否有可能以編程模擬從dom1
使用jQuery(或香草的JavaScript)拖動和放下到dom2
,其中dom1
是拖動和dom2
是可投放使用jQuery UI。
注意:我想這樣做的原因是構建自動化的UI測試。
你必須記住,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")
});
我通常使用jquery.ui複雜的事情拖墜: http://jqueryui.com/demos/draggable/
我不認爲這回答我的問題。我有已經*可拖動和可拖放的元素。我想觸發'drag'和'drop'事件,而不用手動操作(用鼠標)。 – Randomblue
@Randomblue您是使用jQuery UI還是其他插件?無論如何,應該有回調函數和相關文檔。如果沒有,你可以自己擴展/修補插件(如果它在Github之類的話),或者使用不同的插件。 – Bojangles
也許你是在模仿動畫元素到另一個動畫之後的動畫?如果是的話,這與用戶交互有什麼關係? –
你總是可以使用Drag-Sort plugin。
如果你使用的UI則有要事在拖動行爲dragstart
drag
和dragstop
。你應該可以像使用其他事件一樣使用jQuery.trigger()
來編程調用這些程序,但是你需要手動操作event
實例,不管怎麼樣,我都會認爲手動輸入你想要項目被放置的座標,並且我不確定那會怎麼樣工作還是爲什麼你會想要這樣做。
我正在嘗試編寫UI測試。 – Randomblue
啊......現在這一切都有道理 - 你應該補充說,這是針對你的問題的UI測試:-)你使用了什麼樣的測試框架? – prodigitalson
我使用Selenium WebDriver,但它有拖放的缺點。 – Randomblue
你想要動畫移動到新的父級。檢查功能JQuery - animate moving DOM element to new parent?
「觸發拖和下降」是一個有點含糊。我認爲你想創建一個拖放式界面,但是你的意思是「我想使用[不存在的]內置拖放事件」? – Bojangles
@JamWaffles:我編輯了這個問題。我有可拖動和可拖動的元素。我想通過編寫JavaScript代碼來觸發拖放這些元素而不使用鼠標。 – Randomblue