onClickをJavaScriptで動的に書き換えることができない

手元のメモには以下のように書いてありました。

Chrome(と噂ではwebkit)ではonclickの内容を動的にJSで変えることはできない(エラーもでず、処理そのものを無視される)

「今の時代にonClickとか笑止」と思うかもしれませんが、5年以上前(jQueryが1.4.3のころ)のフレームワークから吐き出されたソースなので、過去の遺物です。しかも、このフレームワークで週400案件ほど回っているので、おいそれと変えるわけにもいかず、しかもコアの部分に手を入れる権限もないので、onClickの内容をjQueryで書き換える必要があったのですが、無理でした。

ただ、書き換えるのが無理なだけで、削ることは可能だったので、removeAttrしてon(‘click’, function(){})にて対応しました。

aタグにonclickとhrefとclickのイベントリスナーがついているなんて、キモチワルイ。

ちなみに、click(onclick/clickのイベントリスナー)の処理が終わってからhrefのリンク先に飛ぶことは確認できました。(2017/05/25現在のChromeとFirefoxでfor文100万回まわした)

でも、私の中では、hrefとclick(onclick/clickのイベントリスナー)は別のプロセスなので、clickの処理の中で最後にlocation.hrefしたいとは思います。

この辺はWebデザイン事務所とかだと規模が小さくて理解されないですが、週400本ですからねぇ・・・。該当箇所が毎週数千箇所量産され、しかも負荷分散のためにクラウド上の複数台のサーバに複製されていくとなると、最適解も変わってくるのです。(IEもなかなか切れないですしね。)

15年前の私なら理解できなくてガタガタ言う側だったかもしれないです。

  • このエントリーをはてなブックマークに追加

水蕗をフォローする

コメントを残す