昨日のソースにバグあり?
2007年1月31日 0時00分に書いた「ホームページ製作」の「PHPの備忘録」 ネタ
Opera7.23のバグなのか、ソースのバグなのか まだはっきりわかりません。 追加したスクリプト中の <object>タグの中の内部処理.php?パラメータが なぜか2回呼ばれてる。 なぜ? JavaScript内にデバッグを入れてみても この関数が2回呼ばれてるわけではないみたい。 純粋にこの<object>が2回呼ばれてる?っぽい。 しかも、1回しか呼ばれないときもある。 タイミングによって、2回呼ばれるときもある。 というか、2回呼ばれることのほうが多い。 原因も対応策も未定。
[コメント読む(0)]
▲上へ
Ajax非対応ブラウザでもページ遷移なしにサーバからデータを取得する。
2007年1月30日 0時00分に書いた「ホームページ製作」の「PHPの備忘録」 ネタ
タイトル長いな。 新ページはAjax満載です。 で、「チームゴルゴ」という変な集団(笑)に モニタをお願いしてました。 Mac使いのT氏より、いくつかのブラウザでの動作を確認していただいたところ、 やっぱり出た。MacIE、Ajax完全非対応! ということで、いろいろと対策を考えました。 備忘録。 ------ if ( window.ActiveXObject ) {// for IE xmlhttp = new ActiveXObject ("Microsoft.XMLHTTP"); } else if ( window.XMLHttpRequest ) {// for Firefox, Opera xmlhttp = new XMLHttpRequest(); } //(1) if (xmlhttp) { xmlhttp.onreadystatechange = OKだったときの関数; xmlhttp.open('GET', '内部処理.php?パラメータ', true); xmlhttp.send(null); } function OKだったときの関数() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById("表示エリア名").innerHTML = xmlhttp.responseText; } } まあ基本はこんな感じですわ。 最近ではMicrosoft.XMLHTTP2だの3だのってあるみたいですけどね。 で、Ajax非対応(=XMLHttpRequest非対応)のブラウザの場合、 (1)の時点で xmlhttpには何も入らないわけです。 もうちょっと言うと、一番先頭で xmlhttp=null としておくと、(1)では xmlhttp=null のままなわけで、(1)すぐ下のif文は通らない、ということになります。 要は、Ajax非対応のブラウザ向けに else を追加すればいいだけの話。 ------ 呼び出し元のページは <div id="表示エリア名"> <input type="button" onclick="上のJava Script()"> </div> となっていて、 Ajax対応ブラウザの場合は、表示エリア内に xmlhttp.responseTextが出力される、と。 じゃあAjax非対応(xmlhttp=null)ブラウザだったら? OKだったときの関数へは行かないので、何も表示されない。 ということで、xmlhttp=nullの場合は、 そこに内部処理ページを埋め込んでしまえばよい、ということになるのです。 ------ 追加したスクリプト。 } else { top.document.getElementById("表示エリア名").innerHTML = '<object type="text/html" data="内部処理.php?パラメータ" style="スタイル" standby="読み込み中..."></object>'; } という感じ。 ------ 一応、Opera7.23での動作確認はしてみましたが、 動きとしてはAjaxと遜色ないと思います。 あとは内部処理ページでどこまでHTMLを組み込むか? ってこともありますが。 (Ajaxで呼ばれても、OBJECTタグ埋め込みで呼ばれても、 動きが変わらないようにうまいこと作りこむ必要があるってことです) ------ でも、どちらにしろ、 ブラウザのJavaScriptがOFFになっていたら もちろん動作しません。 その対応は別途必要です。 ちなみに、追加したスクリプトの document.…の前の「top」は 内部処理.phpで生成されたHTMLから、さらに別パラメータなどで 表示エリアに内部処理.phpを再読み込みさせたい場合に必要です。 まあ「parent」でも動くとは思うけど。
[コメント読む(0)]
▲上へ
Webページを作るにあたり、頭を悩ませること。
2007年1月26日 0時00分に書いた「ホームページ製作」の「ホームページもろもろ」 ネタ
それはどこまでテスト(動作確認・表示確認)を行うか? OSで言えば、Windows、Mac、Linux ブラウザで言えば、IE、Gecko系のNetscape、Firefoxなど、KHTML系のSafari、Konquerorなど、Opera、ケータイ用ブラウザ等々、 しかもバージョンにまで違いをつけて・・・。 なんてことしてたら、いつまでたっても公開できません。 みなさんはどうしてるんでしょう? ------ アクセスログを見てみた。 実に96%を越える方々がWindowsを使い、 Macよりケータイのほうが多かったりする。 そしてブラウザは95%の方がIE5以上。 じゃあ確認はWinIE5だけでやればいいかというと、そうではない。 と思う。 Win98、IE4.01で見ている人もいる。 Mac、IE4.5で見ている人もいる。 Win2k、NN4.7で見ている人もいる。 正常に見えているんでしょうか??? ------ で、現在製作中の新ページ。 確認計画を立てます。 Windowsの場合。 IE6は一応。ってか、これで崩れたら終わってる。という話。 IE5。Ajaxが動くのか? IE4。Ajaxは動かない。けど表示が崩れないか? →古いノートがあるので、Win98を入れて、初期状態(IE4.01だっけ?)で試してみる。 IE7。やばいかも。動かないかも。 Gecko系は NN4.7。Ajax動かないし、表示も崩れることは既知。どこまで崩れるのか。代替表示方法の確認(というか模索) NN6.1。Ajax動かない? NN7.1。一応最新版? Firefoxはいいや。動くでしょ? Opera7.53。Ajax動かない? Opera8.01。あれ?家のPCって8.01だっけ? Macの場合。 IE5.16。IE for Macはサポートも終了しているけど、使っている方もいるので。 ホントはIE4.xを試したかったけど、入手困難?みたい。 Firefox(バージョン未定)。ホントは1.xを試したいけど、手に入るかしら? Safari1.2。Macの今の標準なんですか?よくしらないけど。 Linuxの場合。 一応Konquerorだけ試すか。 そもそもLinuxとMacをどう入れるか。 新サーバ予定マシンつぶすか、仮想マシン使うか。 どっちにしても手間かかるなぁ。 ということで、 Mac、Linuxを普段お使いの方、新サイトのモニターを募集します。 「新しいサイトにダメ出ししてやってもいいぞ」という方、ご連絡いただけると 大変助かります(笑)
[コメント読む(0)]
▲上へ
IEのバグに悩まされていた。
2007年1月25日 0時00分に書いた「ホームページ製作」の「CSSの備忘録」 ネタ
[コメント読む(0)]
▲上へ
ブレーカーおちる。
2007年1月24日 0時00分に書いた「自宅サーバ」の「障害連絡」 ネタ
ご迷惑をおかけしました。 多分、奥さんが電子レンジと食洗機をいっしょに使ったんだろうな。 会社からも突然、接続できなくなりました。 メールしたら、やっぱり落ちたとのこと。 自動的に電源ONにできる設定がBIOSにあるって聞いたんですが、 ホントですかね? といいつつ、ヤフオクでUPS(無停電電源装置)を購入しようと ふらふらしてます。 でも、UPS導入してもブレーカー落ちたら サーバの電源切れなくても、ルータが切れるから 結局つながらなくなるんだけど。 ルータは居間で、サーバは2階4畳半だから。。。 まあ復帰が早くなるだけマシか?
[コメント読む(0)]
▲上へ