江戸一番のジャスタウェイ職人のブログ

江戸一番のジャスタウェイ職人

contenteditableな要素にフォーカスが当たっている時にdraggableが要素をクリックするとバグる(Chrome)

Chrome: 25.0.1364.172
動作サンプル: http://jsdo.it/su_aska/tdQh

<div contenteditable="true">
    Editできる奴
</div>
<div draggable="true">
    D&Dできる奴
</div>

この「Editできる奴」をクリックした後に「D&Dできる奴」をクリックしても「Editできる奴」のカーソルが消えないのだ。(Chrome: 25.0.1364.172)

https://gist.github.com/shimondoodkin/1081133

このgistの解決方法だと、

var editableFix = $('<input style="width:1px;height:1px;border:none;margin:0;padding:0;" tabIndex="-1">').appendTo('html');

$('[contenteditable]').blur(function(){
  editableFix[0].setSelectionRange(0, 0);
  editableFix.blur();
})

といった具合にダミーのinputに一回フォーカスを当てて外すという荒業

うーん、とりあえずChromeのフォーラムを確認してみよう...、治るまではこの荒業を仕込んでおくしかない...、まぁChromeは自動バージョンアップされるので待っていれば治るだろう(多分)。

経緯

新しいタスク登録フローではモーダルではなくcontenteditableなdivを使っていて気づいた。

f:id:s-aska:20130319152048p:plain
※画像は開発中のものです