読者です 読者をやめる 読者になる 読者になる

GalaxyS4のWebViewで要素を削除しても表示が残るバグ

tech

GalaxyS4のWebViewである要素をremoveChildしても画面に表示が残り続けるバグを踏みました。 removeChildした後に当該要素をquerySelectorしてみてもnullになるので、DOMツリー上からは消えてるみたい。

で、その要素がposition:absoluteだったのでおそらく要素削除時にレイアウトが何故か発生しないバグがWebView内部にあるんだろうなーと予想して回避コード書いてみたら正解でした。

要素を消す前にいかのコードを実行して無理やりレイアウトのバッチを実行するようにしました。

// absoluteからstaticに変更して、レイアウトのバッチを実行させる
elm.style.position = 'static';
window.getComputedStyle(elm, null).width;

elm.parentNode.removeChild(elm);

久々にひどいバグに遭遇したなー。