タグ『 JavaScript 』

≒ CatDogその後

今日訓練でJSON関係ちょっとやったので、その演習の時間に試行錯誤。ものはこれ

元のコードの分かってなかった部分を分解してみた。「一旦#dataに入れて、出して、加工して入れなおして、それから表示」なんてやってるから変な挙動をするんだと思って、受け取ったJSONを我ながら野暮ったいやりかたで分解して、出したり入れたり無し、一発で#dataに入れるように改造した。

  • JSONはすぐに受け取れてる(はず)。
  • とすればただの文字列なのだからおなじfunction内でやりとりするのに例の謎の「alert挿入」は必要ないはず。
  • もしかすればChromeでも見れるようになるかも!

で、1funnction化した。駄目だった。謎alertを入れないとtoo much recursionになる。つまりいつまでたってもJSONから配列に文字列を取り込めない。何で?

さらに途中のプロセスを整理したためなのか、イメージデータ取得に時間のかかる「Other」カテゴリが変になった。なぜかFlickrのsensorにひっかかったのがそのまま表示される。といっても面白写真が見れます、ってことじゃなくて、例の「This photo is currently unavailable」って白いスクエア整形されてないやつが出てくる。みっともないことこの上なし。

前のバージョン(現行か)のCatDogViewerだと「スクエア整形はちゃんと出る」→「クリックして拡大してみると見れない(This photo is currently unavailable)」って順番だったんで、推測すると、

  1. 投稿があるとだだ漏れでフィード流す。ナンバー(=url)は自動付加。
  2. 大雑把な検閲(形状認識とか)で分かり易い不正をはねる。とりあえず白画面にする。
  3. 次の投稿で同ナンバーは上書きされる。
  4. 第一段階の検閲をクリアしたものでナンバー確定。スクエアやその他規定のサイズに整形。派生ナンバー(=url)を(に)付加。
  5. 再検閲。有名人の顔が入っているなど版権ありそうなものをはねる。この場合、ナンバーは上書きされず、なぜかスクエアサイズは残ってる。ほかのサイズは白画面。

じゃないかと思いました。そんなに単純じゃないかな?

で、1と2は光の速さで行われてて、このCat~だと画像取得が早すぎて、3に行く前の画像を持ってきているのではないかと。ということは、これ以上スムーズにしたらもっとおかしくなるのか!

うーん。Chromeどころかレベルが後退しちゃいました。以上。

≒ DOMマイナス2.0

わざわざブログにネガティブなこと書かなくても良いんだけど、最近頭痛が酷い。特に今日は一日中痛い。
理由はここ二ヶ月毎日10時間前後ずーっと本とPCとでにらめっこしてるから。一日でも休むとちょっと気持ち悪い。その結果、首が限界に達しているご様子。
上を向いてると頭痛が治まってくるんだけど、ちょっとでも首を下に傾ける姿勢だと数分後に頭痛がしてきちゃう。まぁ、中年で首の筋力が落ちてるのがホントの原因なんだと思う。アマゾンでブックスタンド買った。明日届いたら背筋のばして勉強しよう。
以上が前置きで、以下本題。
本当に頭痛が酷すぎて全く頭が働かなくて、我ながら酷いコードを職業訓練の演習で書いたので、後々自分が「かってどれほど酷かったか」を振り返り、謙虚になって人に優しくできるためにここに残しておく。

我ながら酷すぎるスクリプト

訓練で演習でやった正解はこれ。基本のBOM操作。これじゃ飽き足らなくてその前の演習分と合体して「DOM2.0やったるんじゃー!」と意気込んで作ったのが上のやつ。
ああ酷い。どこが酷いって何もかも酷いよ。今まで読んできた参考書の著者さん達に謝れ。というかJavaScriptに謝れ。
「インラインでオブジェクト操作したくない(+HTMLはきれいにしておきたい)」「リテラルで書くんじゃなくてDOMから各数値を取得したい」でこうなりました。まだ何もかも分かってない。最後は正解のコードを参考に何とか動くようになりました。

以上、今日はもう少しやって早めに寝ます。願わくば2ヶ月後の自分が、笑ってこのエントリが見られますように。ちゃちゃっとましなコードに書き直せますように。

≒ .nodeNameは大文字で。

if(hoge.nodeName==”body”){
fuga=hoge;
break;
}

は成り立たない。firefoxだけかな。

試した。IE9、Chromeも同じだ。

if(hoge.nodeName==”BODY”)
じゃないとだめ。