先日、
ふと「どこかの駅」を使ってみたら、なんかうまく動かない。いつからおかしくなっていたんだろうか・・・うむぅ。
以前にこちらで書いたように、
MediaWiki API を使って Wikipedia の情報をいわゆるスクレイピングして情報を抽出してやっています。
調べてみたところ、
スクレイピングの開始ページであるこちらに、「このページのノートに、このページに関する意見があります」とかいう余計な table タグが入っているためと分かりました。必要な情報が一つめの table 内に入っているという前提で抽出してたのでおかしくなっていました(^_^;)
ということで、
これについては問題が起きないように修正したらアッサリと直ったのですが、別な問題が起こっていることに気が付きました。予めDOM要素の大きさを求めておく必要があったので、getComputedStyle() を使っているのですが、何故か初期の値がゼロになってしまうという問題です。以前はちゃんと動いていたのに何故かうまく行かなくなっている。
ちなみにlocalhostな環境だとうまく行くのに、何故かサーバーに置いた iframe 内だとダメっぽい・・・。ただ、Chrome の場合は iframe に loading=”lazy” 属性を付けると以前のようにうまく動く。Firefox はそれでもダメ。色々と謎すぎる・・・(^_^;)
はっきりした原因は不明だが、ブラウザの挙動が何か変わったのだろうか? おそらくDOMの構築が完了してないタイミングで取得しようとしたのでゼロになってしまっている気はするけど・・・。でも、明示的に window.onload のタイミングでやってもうまく行ってくれない。うむぅ・・・。
とにかくもタイミング的な問題のようなので、値が取得できるまでリトライするように対策してとりあえずどうにかしました。モヤモヤしたやり方だけど、まぁ仕方なし(^_^;)