3 つcontenteditable
の div があり、ユーザーがタブ キーまたはマウス クリックでカーソルまたはキャレットを配置した div を知りたいのですが、
<div contenteditable="true"></div>
<div contenteditable="true"></div>
<div contenteditable="true"></div>
誰か助けてくれませんか?
3 つcontenteditable
の div があり、ユーザーがタブ キーまたはマウス クリックでカーソルまたはキャレットを配置した div を知りたいのですが、
<div contenteditable="true"></div>
<div contenteditable="true"></div>
<div contenteditable="true"></div>
誰か助けてくれませんか?
私はより良い解決策を考え出しました。これにはdiv
、カーソルをチェックしたいすべてのタグを親タグに囲み、オブジェクトをdiv
使用して、カーソルまたはキャレットが配置されているdivのIDを取得する必要がありますdocument.getSelection()
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<div id=parent>
<div contenteditable="true" id=1>dddd
</div>
<div contenteditable="true" id=2>dddd
</div>
<div contenteditable="true" id=3>dddd
</div>
</div>
<input type="label" id="showRes"></input>
</body>
<script type="text/javascript">
var div = document.getElementsByTagName('div');
var out=document.getElementById('parent');
function findCursor(){
var x=document.getSelection();
var r=x.getRangeAt(0);
var tempnode=document.createElement("div");
tempnode.setAttribute("id","cursorhook");
r.surroundContents(tempnode);
document.getElementById('showRes').value=tempnode.parentNode.id;
document.getElementById(tempnode.parentNode.id).removeChild(document.getElementById("cursorhook"));
}
out.onkeyup=findCursor;
out.onclick=findCursor;
</script>
</html>
を使用しdocument.activeElement
ます。これは、現在ページでフォーカスされている要素を返すだけです。( MDN )
要素にフォーカスを当てるたびにトリガーされるonfocusイベントを使用します ...
例:
var div = document.getElementsByTagName('div');
for(var i=0;i<div.length;i++)
div[i].addEventListener('focus',function(){document.getElementById('showRes').value = this.id;},false);
HTML :
<div contenteditable="true" id=1></div>
<div contenteditable="true" id=2></div>
<div contenteditable="true" id=3></div>
<input type="label" id="showRes"></input>