質問: お世話になります。 今回、safariを使用してシステム開発を行う上で、blurイベント時に意図した動きにならなかったので、 ご質問させていただきます。 ### 前提・実現したいこと safariブラウザ input textフィールドが複数ありまして、それぞれIDを付与する。 そのIDをblurイベントで拾って、処理を行う(実際は計算処理)。 ### 発生している問題・エラーメッセージ オペレーションとしては下記になります 1テキストフィールド1にフォーカスを当てる 2テキストフィールド2をクリックしてフォーカスを当てる ⇒この際にテキストフィールド1のblurイベントが処理される 続いてテキストフィールド2のblurイベントが処理される この後にテキストフィールド2にフォーカスが当たります この時、テキストフィールド1のblurイベントが処理されあとに、テキストフィールド2のblurイベントが処理されるのは何故でしょうか。。。。。 chromeでは、テキストフィールド1のblurイベントが処理されあとにテキストフィールド2にフォーカスが当たり、テキストフィールド2のblurイベントは処理されません。 やりたいこととしては、 1テキストフィールド1にフォーカスを当てる 2テキストフィールド2をクリックしてフォーカスを当てる ⇒この際にテキストフィールド1のblurイベントが処理される テキストフィールド2にフォーカスが当たる という事で、フォーカスインした時の要素のblurイベントが現在は走るので、 それを走らせないようにしたいという事です。 ### 該当のソースコード ``` cityname: KittyName: ``` やり方等、ご教授いただければ幸いです。 宜しくお願いいたします。
回答: どうも古いsafariには blur/focus 問題があるようです。下記のリストを見るに、「tabindex」を設定すれば動作する可能性があります。(実記テストしていないので憶測です) 【Events - blur and focus】 こちらはclickで書き換えています。clickであればほぼ確実に取得できると思われるので、次の要素をクリックしたタイミングで前の処理(blurで設定している処理)を行う手法です。 【javascript - jQuery .focus() and .blur() not working in Chrome or Safari - Stack Overflow】 また、Safari for Windows は開発が終了しており、また脆弱性も修正されていないため、別のブラウザを使われるほうが安全だと思います。事務所内の一部PCなどにインストールされているということとは思いますが、FirefoxやChromeに切り替えられたほうが良いと思います。 【Safari - Wikipedia】 【JVN#42676559: Safari においてリモートからローカルファイルを読み取り可能な脆弱性】