プログラミング

2008.04.11

気楽な日々が。。。

仕事ですけど、だめもとで気楽に、しかしおもろいから楽しく一生懸命やってたら、なんだか少し受注確率が高くなっちゃったらしい。。。ホンマに納品するとなると、気楽じゃなくなるからいやなんだけど、そんなこと言っててどうすんだ、このハゲオヤヂ、、、あー、でも気楽なのがいいのにぃー。やることと考えなあかん事が増えるー。いやや、いやや、いややー。

| | コメント (0) | トラックバック (0)

2008.03.21

覚え書くです: IE7 + JSON での困ったチャン + 淡路島一周

こういう公共の場所をノート代わりにして申し訳ないが、その筋の人にはちょっと有用かも知れんので、書いておきますわ。その筋以外の人には何の情報にもならないけど、怒らないでね。

JSON書式でオブジェクトを生成する場合、classという属性を指定するには、ダブルクォートで括って置かないと、IE7でちゃんと動きませんわ。

× var foo = { class : "bar"};
 var foo = { "class" : "bar"};

ちゃんと動かんというよりは、この類のコードを外部javascriptファイルに記述してたら、そのスクリプトがまるごと無視されます。読み込まれもせず、実行もされず、IE7は終始無言じゃ。

いま、わし、Dojo-1.0使って開発してるだす。先日からとあるスクリプトが何でだか読み込まれなくって、困ったチャン。Dojoの dijit.layout.ContentPane のコンストラクタにclass属性 を指定するように変更したら、IE7で動かなくなってた。大幅な変更だったので、何がいけないかが見えなくなって。いろいろ調べてみるとそのスクリプト自体が読み込まれてなかったことが今朝やっと判明。

FireFoxではOKなので、IE7は、class というのを予約語的に扱っているのでしょうね(javascriptで?!)。その上で、構文解析中に無言で落ちている模様。エラー出してないって事は、不具合だろうな。MSさんこれちょっと恥ずかしいのでは?

ところで自転車ですが、(上とは脈略ありません。ちょっと無理やりでごめん。)

昨日、明石CRをガシガシ56キロ程走った。走行時間は2時間半。ルートは江井ヶ島~林崎を3往復+人口島内陸部。雨上がりで曇天、あんまり人がいないもんで、張り切りすぎた。

5月に同僚と淡路一周するかもかも。LSDなお年頃ですので、無理せず一泊することも念頭においてる。同僚は先日購入したビギナー向けフラットバーロード。わし、ロードマンで大丈夫かなぁ、ちょっと不安。来月以降、本格的なメンテナンスへ着手かも。あ、あと長距離走る術を見につけるだす。かっこいいウェアも見定めるのじゃ。

時期外しているかもですが、funride 購入。1日100km走るには?見たいな記事があったから。それと、ジテツーに関する別冊がついてて、ドイターがえらい持ち上げられて紹介されてた。しかし、750円てちょっと高いな。

| | コメント (2) | トラックバック (0)

2008.02.26

激しく同意しまくる。。。(←うそ)

訳あって仕方なく、自クライアントマシン(DELLのノート)にIE7入れて、いまさらながらVS2005のSP1入れて、.NET Framework のSP1とか入れている。しかし、しかし、しかし、、、、、一日過ぎてしまいそうじゃ。

特にVS2005のSP1は遅すぎる。「必要な情報をあつめています...」などと、ダイアログに長いこと表示されてたけど、おかしいと思って、さっき見たら鼻風船だして寝とるがなぁ(←うそ)。

おまけにインストーラで負荷100%。ほんま、わしのXP Pro火吹くんと違うやろか?ジェットエンジンのようにファンが回っておる。おぉぉ!今1cmほどPCが浮いたし(←うそ)

暇やのに、ちょくちょく「上記の内容に同意します」とかいう、ウソ臭いボタンを押さないかんし。。。なんも進まんなぁー。

「読んでないけど同意します(だってインストールできないでしょ)」ボタンもおいて置くべしべし。べしべし。

| | コメント (0) | トラックバック (0)

2007.11.03

IE6ではテーブル要素の動的生成時にtbodyを生成しないとだめみたい

IE6ではドキュメントロード時にテーブル要素をDOM使って生成する場合、theadやtbodyを生成しなければいけないようです。

FireFoxではどっちでもいいみたいですが。。。

静的なhtmlに書く時は、省略するケースが多いが、IEはこれを補ってくれている。でも、javascriptから動的に生成するときは補ってくれない模様。

以下のサンプルではテーブルが表示されません。

// [javascript]
// TABLEの動的生成
var body = document.getElementsByTagName('body')[0];
var table = document.createElement('table');
var tr = document.createElement('tr');
var th = document.createElement('th');
var text = document.createTextNode('これだめ!');
th.appendChild(text);
tr.appendChild(th);
table.appendChild(tr);
body.appendChild(table);

以下のようにするとOK

// [javascript]
// TABLEの動的生成
var body = document.getElementsByTagName('body')[0];
var table = document.createElement('table');
//↓これが必要!
var tbody = document.createElement('tbody');
var tr = document.createElement('tr');
var th = document.createElement('th');
var text = document.createTextNode('おめでとー');
th.appendChild(text);
tr.appendChild(th);
//IEはtbodyを補ってくれないので
//↓こうしないといかんの
tbody.appendChild(tr);
table.appendChild(tbody); 
body.appendChild(table);

| | コメント (5) | トラックバック (0)

IE6のDOMにはsetAttributeメソッドがない?

どうもIE6では、エレメントのsetAttribute(name, value)メソッドがエラーになるようです。わたしだけ?

エレメントのスタイル属性を設定するために調べてたのですが、IEでもFireFoxでも動作する代替手段を見つけたので、下記に書いておく。

// [javascript]
// IE6ではエラー。FireFoxではOK
var col = document.createElement('td');
col.setAttribute('style', 'color:blue;');
// [javascript]
// 同じ事をする。以下ならIE6でもFireFoxでもOK
var col = document.createElement('td');
col.style.color='blue';

うーん、やっぱ標準化して欲しいや。

| | コメント (6) | トラックバック (0)

IE6ではJSONの最後にカンマいれるとエラー

javascriptでのJSON書式で、最後の項目の後ろに ','(カンマ)をつけていると、IE6でエラーになった。「不正な文字がある」とかいうエラーです。

コード例示しますね。

// [javascript]
// IE6ではエラー!
// JSON書式の項目の最後にカンマを入れては
// ならないようです。
var value = makeStyleValue( {
    height: GRID_DATA_ROW_DFL_HEIGHT,
    background_color: bgColor,
    border_width: '0px',//←これね!
  }
);

FireFoxでは問題ないのです。IEの(一見厳格な)解釈は残念な仕様ですね。javascriptはC言語系に分類される言語なんだから歴史的にもこのカンマは認めて欲しいな。

| | コメント (0) | トラックバック (0)

2007.11.02

Prototype.jsのgetElementsByClassNameがDojoとコンフリクトか?

IEのbody.onloadの中で、getElementByClassName() を使用すると、Dojoのテキストボックスからフォーカスが外れるときにvalueが消えちゃう。。。。。使わなければちゃんとしてる。わけわからん。

Prototype.jsとDojoは一緒に使っちゃいかんのかな。prototype.jsはVer.1.5.1、DojoはVer.0.9.0を使用。あ、それからbody.onload以外で使ってちゃんとしてるかどうかは未確認でござる。

getElementsByClassNameはPrototype.jsで拡張されたメソッドだが。。。中身を見る気にもならんので、いちいちDOMのクラス名調べて対処したけど。

ある関数を順次コメントアウトしていって調べてたが、まさかの最後のコメントアウトで原因発見。まさかまさか。たまには他人を疑うのも先にせんといかんな。あー、つかれた。

| | コメント (0) | トラックバック (0)

Dojo 0.9.0 テーマ適用時ボタンのフォントサイズ変える

IE6でDojo 0.9.0のテーマを適用したボタンのフォントサイズを変えるには、CSSで .dijitButton でなく .dijitButtonContentsに指定しなくてはならん。

IE6ではボタンのフォントが妙に小さくて、タブコンテナの見出し文字とバランスが悪い。だから大きくしたかったのだが、Dojoのページ(英語)で示されている例ではうまくいかん。そこではdijitButtonクラスにスタイルを指定すればOKとなっている。FireFoxならこれでOKぽいけど、IEではだめー。

こういうときのFireBugだろ?って感じでインスペクト!インスペクト!ってクリクリ調べると簡単に「なんだ .dijitButtonContents ならOKじゃないの?」って。試してみたらあっさりOK。

Ajaxの世界ではFireBugのおかげでFireFoxの使用率が高いんでしょうね。でも商業ソフトではどうしてもOSにビルトインされてるIEが一番楽なわけで。保守とかね。それに判っちゃいるけどサーバー側でもIIS+ASPとか使っちゃうのよね。。。あ、話がそれた。

IE6での見栄えを調節するためにFireFox&FireBugを使うという、世のMS嫌いの人から総すかん食いそうな状況。しかし、どうしてもこうなってしまう。IEのシェアには勝てんぞなもし。

個人的にはFireFoxが便利なので使っている。負荷が高そうなのと、たまに落ちるから困るけど。落ち方がネスケと一緒な気がするなー。でもFireFoxは落ちた後、変に低姿勢なところが笑える。

| | コメント (0) | トラックバック (0)