スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

異なるownerDocumentの要素をElement#animate()するとクラッシュする

Chrome46で確認。
Web Animation API の Element#animate() を実行するとタブがクラッシュする。

具体的には、XHRで取得したDocumentからElementをNode#removeChild()で引っこ抜いてElement#animate([...{}], {})を実行するとタブがクラッシュする。当該部分をtry/catchで囲ってもキャッチできず、DevToolsも一緒にクラッシュする。同じ内容のElementをRangeから作成して同じことをやる分には問題なくアニメーションが実行される。引っこ抜いたElementをNode#cloneNode(true)して返り値を使ってみたけどやっぱりクラッシュする。

Document挿入後にElement#animate()するようにしたら改善した。でも作成した同じ内容のElementは挿入前にやっても問題なかったのに一体何が違うというのか。とてもモヤモヤするけど頭がフットーしそうだから深くは考えないことにしよう。おしまい。

2016.01.10 23:58 - 追記とタイトル修正
ふと document.importNode() を使ってElementのコピーを作り、それをDocument挿入前にanimate()してみたらクラッシュせずにすんなりアニメーションに成功した。Documentへ挿入した後ならクラッシュしなかったのはNode#appendChildがDOM-Level4から挿入時にownerDocumentを自動的に書き換えてくれるお陰だったらしい。それにしてもownerDocumentとはいったい… うごご。
関連記事

コメントの投稿

非公開コメント

すポンサードリンク
最新記事
カテゴリ
DN (57)
CSS (2)
いろいろ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。