IE7がWindowsXPの自動更新で配布される日
以前(IE7がWindowsXPの自動更新で配布 )に書いたIE7のアップデートがやってきました。
俺は、仕事でブラウザの各バージョンがほしいので、とりあえずは、アップデートはお断り!!!
しばらく様子を見てみたいと思います。
「IE7を今すぐ使いましょう」と猛烈に促しているけど、うちのWindowsVistaのIE7は、重いし落ちるし…
まだまだ、IE6のままのほうがいいじゃないかって思うけどね。
心配な人は、しばらく様子を見てからインストールしたほうがいいと思うよ (^0^)ノ
で、インストールしたくない人は、自動更新の画面で左側のチェックボックスを外そう!
次の場所でこの更新の詳細を参照できます: http://go.microsoft.com/fwlink/?LinkId=71727
あっ。でも、「自動更新」の設定が「自動(推奨)」になってる人は、勝手にインストールされてしまうので、
「更新を通知するのみで、自動的なダウンロードまたはインストールを実行しない。」
に変更してしまうのもよいのではないでしょうか?
(その代わり、その他のアップデートは自分の責任で行いましょうね^-^)
JavaScriptでDOM操作
本業が忙しくて、すっかり間が空いてしまいましたね(汗)
今回は、JavaScriptでDOM操作を行う際のinnerHTMLに関してです。
XHTMLだと、innerHTMLが有効でないとか、いろいろありますがそれは、今回ノータッチで。
DOMなんぞ、ただの構造解析に過ぎないわけですが…
FireFoxとIEで動作の差が多すぎるのが非常に敷居を上げているのではないでしょうか。
要するに、ForeBugを用いてデバッグをしてもIEでは、全く表示されなかったりということがよくあると思います。
まぁ、FireFoxが悪いのか、IEが悪いのか…なんてことは、どーでもいいんですがね。
要は、どのブラウザでも動きゃいいんですよ。
当然、DOMの開発には、FireBugが必須なんです。FireBugが無いと結構やばいよぅというくらいです。
そして、先日の罠です。
IEだけテーブルの構築・プルダウンの構築がうまくいかないんです。
(以前の仕事で、うっすらと嫌な記憶に残っていたのですがね。。。)
そもそも、テーブルタグなんぞ使ってテンプレートを提出してくる、HTMLコーダーもどうかと思うわけだが・・・
そんな事言っても、HTMLコーダーでテーブルタグを使う人は多いね。。。
(ページの動的な部分でテーブルタグはホント勘弁してください。スタティックは勝手にしてくれればいいんですけど。)
まぁ、結果HTMLとCSSを書き換えましたが・・・(テーブル→リスト)。
もちろん、テーブル構築もできますよ。
http://developer.mozilla.org/en/docs/DOM:table この辺調べれば書けるのです。
でも、テーブル構築のJavaScript書くよりもHTMLとCSSを修正するほうが早いんだもん…。
次は、まぁ、書き方が悪いわけですが、
<select name="sample" id="sample"></salect>
に対し、
documen.getElementById("sample").innerHTML += '<option value="1">さんぷる';
をJavaScriptを書くわけです。
FireFoxでは、無事動いていますが、IEでは、表示されません。
select・optionオブジェクトを使い、
select_obj.add( option_obj, null )
を使うのが正解でしょうかね。
ただし、これもIEとFireFoxで動作が異なる…ていうか、引数が異なる…orz
try{
select_obj.add(option_obj,null); // FireFox ...
}catch(e){
select_obj.add(option_obj); // IE
}
try...catchでIEを判断しなきゃいけないってことが、はぁ??って感じですが、一般的なんでしょうね。
まぁこれで、必要十分に機能してくれれば、OKですよ(笑)
ちょっと、今日はボヤキかな(笑)
こんなことも、また後で役に立つと思う^-^v
VBScriptで連想配列を使いたい(クラス化)
前回、VBScriptで連想配列を使いたい!ということを書きました。
クラス化したので公開します。
今のところ問題は出てませんが、使用は自己の責任でお願いしますね。
プログラマは、他人のソースをコピーしてもいいんですよ。
ただし、「ソースは、コピーした瞬間からそれはその人のソースです。自分のソースは自分で責任取りましょうね」。
<<クラス>>
<%
Class bringArray
Private bArray
Private Sub Class_Initialize
Set bArray = CreateObject("Scripting.Dictionary")
End Sub
Private Sub Class_Terminate
End Sub
//============================================
// メソッド
//============================================
// Items
Public Function Items
Items = bArray.Items
End Function
// Keys
Public Function Keys
Keys = bArray.Keys
End Function
// Add
Public Sub Add( ByVal key, ByVal val )
bArray.Add key, val
End Sub
// Exists
Public Function Exists( ByVal key )
Exists = bArray.Exists( key )
End Function
// Remove
Public Sub Remove( ByVal key )
bArray.Remove key
End Sub
// RemoveAll
Public Sub RemoveAll()
bArray.RemoveAll
End Sub
// Item
Public Function Item( ByVal key )
If bArray.Exists(key) Then
Item = bArray.Item( key )
Else
Item = ""
End If
End Function
// Key
Public Sub Key( ByVal str )
bArray.Key( str )
End Sub
//============================================
// プロパティ
//============================================
// 文字列長取得
Public Property Get Count
Count = bArray.Count
End Property
End Class
%>
<<使い方>>
1.値のセット
<%
Dim dataArray
Set dataArray = New bringArray // 連想配列作成
dataArray.Add "TYPE", "1"
dataArray.Add "INS_DATE", ""
dataArray.Add "INS_MAN", ""
dataArray.Add "UPD_DATE", ""
dataArray.Add "UPD_MAN", ""
insert_data(dataArray)
%>
2.値の取り出し
<%
Function insert_data( ByVal arrayData )
Dim insSQL
insSQL = ""
insSQL = insSQL & "INSERT INTO TBL_GALLERY("
insSQL = insSQL & "TYPE, "
insSQL = insSQL & "INS_DATE, "
insSQL = insSQL & "INS_MAN, "
insSQL = insSQL & "UPD_DATE, "
insSQL = insSQL & "UPD_MAN, "
insSQL = insSQL & ")VALUES("
insSQL = insSQL & "'"& arrayData.Item("TYPE") &"', "
insSQL = insSQL & "'"& arrayData.Item("INS_DATE") &"', "
insSQL = insSQL & "'"& arrayData.Item("INS_MAN") &"', "
insSQL = insSQL & "'"& arrayData.Item("UPD_DATE") &"', "
insSQL = insSQL & "'"& arrayData.Item("UPD_MAN") &"') "
%>
もちろん、ループ処理でもっとすっきりできたりもしますが、この程度の例がわかりやすいかなぁと(笑)
