質問
キャンバス要素があり、この上にテキスト入力のあるdivがあります。テキスト入力では、テキストを入力したり、カーソルを表示したり、クリックしたときにフォーカスが移動したりできません。
自分で問題を解決するために取った手順
これに類似した他の質問を調査した後、私は原因として以下を無視することができます:
z-divのインデックスがキャンバスよりも低い(入力ボックスはまだ表示されています)
ポジショニングを正しく設定していません(divをposition:absoluteに設定しました)
選択の設定:cssになし(私はこれを持っていません)
コードが長すぎるため、すべてのコードを貼り付けることはできませんが、関連するセクションを投稿することはできます。
setBuildingTileSetは、問題のテキスト入力を含むdivです。
css
#setBuildingTileSet {
height: 200px;
left: 50%;
bottom: 50%;
margin: -100px 0 0 -200px;
position: absolute;
width: 400px;
opacity: 0.7;
background: #000;
z-index:1;
padding: 20px;
}
html
<div id="container"></div>
<div id="setBuildingTileSet">
<h1>Set Building TileSet </h1>
<p><h2>Tileset name</h2></p>
<input id="buildingTileSetName" type="text">
</div>
javaScript
canvas = document.createElement('canvas');
$('#container').append(canvas);
$('#container canvas')[0].id =('canvas');
context = canvas.getContext("2d");
canvas.width = 800;
canvas.height = 600;
私は完全に立ち往生していて、入力ボックスが機能しない理由がわかりません。あなたの助けてくれてありがとう:)
これで解決しました-しかし、解決策がエラーを引き起こす理由はまだ不明です
ええ、私のコードでたくさん遊んだ後、私は「問題」を見つけました。さまざまなUIボタンがクリックされたときにさまざまなものをアクティブにするmouseDownイベントリスナーがあります。
CoffeeScript
window.addEventListener 'mousedown', (e) =>
button = e.which or e.button
if button == 1 then @UIMouseDown(e) # Left mouse click
, false
UIMouseDown: (e) =>
e.preventDefault()
......etc
解決策e.preventDefault()を削除すると、テキストボックスでテキストを入力できるようになりました:)
フォローアップの質問 e.preventDefault()がこの動作を引き起こす理由を誰かが知っていますか?