tuneoogawa さんが書きました:
テストページにおいて、<input>のフォーカスは、フォームの外側をクリック後、少し下に(1-3pxずれて)カーソルが残ってブリンクしていました。
それならば、element.blur()の仕様云々は、一切関係ない話ですよね。
単に、Fxのバグとかアドオンのバグとかでおかしくなった、というような類の話。
Firefoxの-safe-modeでの確認(アドオンがDisabledの状態で起動される)などは、なさっていますか?
Iビームポインターのアイコンは、大抵マウスの設定にあるのですが、別のアイコンに変えてみるとかすると、状況が変化しますか?
tuneoogawa さんが書きました:
ブラウザの状態がいつも正常とは限らないので、「inputにフォーカスがある状態ではなくなる」先の状態が規定される、
または存在しないアンカーに移動しようとした時どこに移動するか規定できるのが、
ブラウザの状態がおかしくなってもアプリケーションから見れば正常に動くよう、アプリケーションを作れる仕様の方が良いのではないかということです。
何のどの「仕様」なのでしょう?「正常とは限らないブラウザーの状態」のために、一体どのような「仕様」を定義できるというのでしょう?
「存在しないアンカーに移動」というリンクの挙動に関しては、HTMLの仕様であって、ブラウザーが勝手に既定できるものではありません。
そして、「存在し得ないアンカー(アンカー名なし)に移動しようとするリンク」は、単に、HTMLを書いた人による「HTMLの文法違反」です。
HTML5になってエラー処理も規定するようになったから、今はどうなのか知りませんけど。
element.blur()で<input>からフォーカスを外した後、余計なイベントを発生させているのは、<a href="存在しないアンカー" onClick="element.blur();">というHTMLを書いた人です。
HTMLの要素のクリックでonClickでJavaScriptコードを実行させたいだけならば、return falseで<a href>の正規の挙動を停めるとか、<button onClick>ボタン名</buton>とかを使えばいい話。
昔からのHTML本には、<a href="#" onClick="JavaScriptコード;">、つまり、<a href="存在し得ないアンカーの相対指定のURL" onClick="JavaScriptコード";>が良く書いてあるのですが、IEだとページの先頭に移動するが、NetScapeやMozillaだとページの位置を移動しない、という現象に、良く泣かされた...
IEと違うからMozillaのバグだ!、というバグを開く前に、<a href>はリンクであって"#"は相対指定のURLでアンカー名の指定なし、だとちゃんと理解し、文法違反のないHTMLを書いて欲しい...