我有一個有點奇怪的設置,其中一個表單元格被製作contenteditable = true與一個div放置它來添加一些邊界效果而不改變表中的任何單元格的大小。我遇到的問題是,單元格頂部的div阻止了mousedown調用 - 我已經有一個通過jQuery綁定到div的處理程序(單元格也是這樣,因爲div只懸停在選定的單元格上)。如何觸發contenteditable mousedown事件?
是否有可能觸發表格單元格上的mousedown事件,同時從div的jQuery處理程序傳遞事件信息(鼠標位置,event.data等)(定位在中心位置,單元格大小爲2px)在每個方向 - 使用css「outline」屬性在這裏不是一個選項,因爲一些單元格具有不同大小的邊框,可以將它扔掉)?
我不是試圖在這種情況下爲contenteditable單元調用自定義mousedown處理程序,而是讓鼠標事件傳播到contenteditable單元(用於執行選擇開始/結束更改等操作)。
編輯:我通過以下嘗試,它仍然無法觸發任何本機contenteditable事件(移動選擇光標,設置焦點內鉻[雖然在Firefox中它確實設置焦點,如果你已經點擊在CONTENTEDITABLE DIV一次前):
var x = 10;
var y = 10;
var event = document.createEvent('MouseEvents');
event.initMouseEvent('mousedown', true, true, window, 1, element.offsetLeft + x, element.offsetY + y, x, y, false, false, false, false, 0, null);
element.dispatchEvent(event);
這裏是一個小提琴演示該問題:
http://jsfiddle.net/CoryG/SgBy4/
觸發似乎與.bind或類似活動結合工作,但不會觸發,將一個CONTENTEDITABLE領域內將光標移動到本地鼠標按下功能。 – CoryG
我明白你的意思了。我編輯了一些將光標移動到輸入的東西。 – louisbros
知足單元已經有焦點(div懸停在它上面不能有焦點,即使點擊) - 問題在於移動光標。例如,當文本框中有文本並單擊其中的不同部分時,光標會移動,當您拖動並拖動它時會選擇其中的一部分 - 這些是我嘗試通過將鼠標位置數據轉發到潛在的可控細胞。 – CoryG