DIV
にTABINDEX
があり、フォーカスを受け取ることができるとします。 mousedown
には、その中に含まれているテキストを変更すると想像してくださいDIV
。 ChromeとEdgeでは、DIV
が注目します。しかしFirefoxではそうではありません。マウスのコンテンツを変更すると、要素がFirefoxにフォーカスしない
Firefoxでは、DIV
の中のクリックされたテキストノードが重要であるようです。 innerHTML
またはtextContent
を使用して破棄/置換すると、DIV
はフォーカスを受け取ることができません。ここで
はフィドルです:https://jsfiddle.net/gq52bj7o
HTML:
<div id="test" tabIndex="0">click here (on the text, not outside)</div>
JavaScriptを:あなたは、既存のテキストノード(testDiv.firstChild.nodeValue = "why Firefox, why?";
)を保存する場合に予想されるように、すべてが動作することを
var testDiv = document.getElementById("test");
testDiv.addEventListener(
"mousedown",
function()
{
//testDiv.innerHTML = "why Firefox, why?"; // KO
testDiv.textContent = "why Firefox, why?"; // KO
//testDiv.firstChild.nodeValue = "why Firefox, why?"; // OK
});
注意してください。また、テキストの外側をクリックすると、DIV
もフォーカスを受け取ります。
これは正常ですか?この動作を回避するにはどうすればいいでしょうか?(クリックした要素のtextContent
またはinnerHTML
を更新する、より大きなアプリケーションを想像してください - フォーカスの問題はFirefoxで発生します...)?
*「TABINDEXでフォーカスを受け取れるようにしてください」と言っています。*「tabindex」を持っているという理由だけで、要素がフォーカスを受け取ることができません。その機能はブラウザによって異なります。 –
@ScottMarcusはい。しかし、あなたがフィドルで見ることができるように、DIVは通常の状況でFirefox、Edge、およびChromeに焦点を当てることができます。 –