#javascript

argumentsは配列じゃないため、配列のメソッドは

使えません。ということは本を読んだとき当たり前だと思ったんですが、

実際コードに落としたときは

自然とargument.slice()を書いちゃいました。

argumentsで配列のメソッドを使うには

Array.prototype.<配列のメソッド>.call(arguments,<パラメータ>)</p> ```js Array.prototype.slice.call(arguments, 2) ```

上記の意図としてはarguments.slice(2)の表現に近いです。

argumentsはarray-likeオブジェクト

ここでちょっとargumentsの基本知識を復習します。

length属性もあるし、[]でindex指定のオブジェクトを参照できますけど、

argumentsは配列に似ているオブジェクトだけです。

予約語

Technically, argumentsは予約語ではないですが、

予約語として認識してよいです。

つまりargumentsという変数は作成しないでってことです。


```js function foo(x){ alert(x); var arguments; arguments[0] = null; //xの値が変更されちゃう alert(x); // null が出力される } ```
callee Property

Refers to the function that is currently being executed.

今実行中のファクションを参照しています。

```js function(x) { if (x <= 1) return 1; return x * arguments.callee(x-1); } ``` </div>

#javascript

知っておくべきこと

  • ActiveXはIE専用のものと理解してよい、Firefoxなどでは存在しない
  • new ActiveXObject(“Microsoft.XMLHTTP”)でIEのXMLHttpRequestが生成される
  • IE のバージョンによっては、”Microsoft.XMLHTTP”の代わりにこれらも使用できるそうです:
    • “Msxml2.XMLHTTP.5.0”
    • “Msxml2.XMLHTTP.4.0”
    • “Msxml2.XMLHTTP.3.0”
    • “Msxml2.XMLHTTP”
  • もし生成できればActiveXコントロールは有効になっている

検出ソースコード

// ブラウザがIEの場合
if (window.ActiveXObject) {
  try {
  //IEのXMLHttpRequestオブジェクトを試しに生成
  var xhr = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (e) {
    alert('ActiveXコントロールは無効になっています');
  }
}


参考サイト

動画をHTMLに埋め込むヒント - faireal.net

#diary

ブログをキャリアの礎にしようと思っている方へ - GoTheDistanceこういうすてきな記事を見つかりました。

自分の興味関心をエントリにしていることで、輪郭を帯びてきて色んなことが可視化されていきます。それだけでも、大きな意味があります。「ああ、オレはやっぱこういうの嫌い or 好き」の方向性が見えてくるようになります。


特にこの言葉に感じたことが多かったのです。

最近仕事の関係で、よくIE6~IE8とFirefoxでのJavaScript、CSSの不具合を調査したり、悩んだりしました。

特定のブラウザで画面が崩れるのは本当に嫌だなと

痛感しました。

これがウェブ開発の現状なんですかと?

なぜ自分はもっと立派なプログラムの問題と戦うのではなく、

ブラウザと戦わなきゃならないのか?

なぜActiveXの無効を前提とするユーザがいるのか?

なぜIEがアップグレードするたびに新たな不具合を招くのか?

なぜマイクロソフトはもっと強制的にユーザにIEのバージョンをアップグレードさせないのか?

もしChrome、Opera、Safariなどの市場シェアが大きくなったら、それらも対応するとの要求が出てくるのか?

なぜお客さんは低いバージョンのIEを未だも使っているのか?Firefoxに切り替えるのはそんなに不現実の話なのか?


こんなのは嫌です。

そもそもFlexを勉強しよと思ったきっかけは

会社の先輩のサイトを見て、

デザインやアニメーションがすごいきれで聞いたら、

「Flexならこんなの簡単に作れるよ、ブラウザと関係ないし」の言葉でした。

自分の好きの方向性というのはこんなことでしょう。

ブラウザのわがままを避けたい、

純粋なプログラミングがしたいです。

#ie

概要

ローカルのファイルを参照する際のセキュリティを変更したとします。

IEの[インターネット オプション] ダイアログ ボックスの [セキュリティ] タブでは

ローカルのマイコンピュータのセキュリティゾーンがデフォルトでは非表示になっています。

それを表示させるにはレジストリを編集する必要があります。

動作環境

以下の環境で動作確認済みです。

その他の環境についてはマイクロソフトのサポートヘルプを参照してください。

  • OS: Win XP
  • IE: IE8

方法

警告 : レジストリ エディタの使い方を誤ると、深刻な問題が発生することがあります。


[インターネット オプション] ダイアログ ボックスの [セキュリティ] タブにマイ コンピュータのセキュリティ ゾーンを表示するかどうかは、次のレジストリ キー内にある Flags 値によって設定できます。

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0

Flags 値は DWORD 値です。Flags 値のデータ値を 47 (16 進) に設定すると、マイ コンピュータのセキュリティゾーンが表示されるようになります。Flags 値のデータ値を 21 (16 進) に設定すると、マイ コンピュータのセキュリティゾーンが非表示になります。

http://support.microsoft.com/kb/315933
#jquery

@IT新しい連載:jQuery逆引きリファレンスが始まりました。

既に一ヶ月前になりますが、

自己テスト用でもいいともいます。

私は自信がない項目が結構ありました。


jQueryで使ったシンタックス英単語は

ほとんど簡単な単語で

ぱっと見たら分かるような気がするけど、

本気で使おうとしたらまたいろいろ調べないと

と感じました。

例えば:containのフィルタにはテキスト(case-sensitive)

しか入りません。

逆に:hasにはセレクタ分が使えるなど

意味合い的には似てますが、

使い方がまったく違うところが

落とし穴だと思います。


以下がセレクタ編のタイトルです。

自信があるのは何項目ですか?

* id値で要素を特定するには?

* タグ名で要素を特定するには?

* スタイル・クラスで要素を特定するには?

* 複数のセレクタをまとめて指定するには?

* すべての要素を取得するには?

* ある要素の配下にある要素だけを取得するには?

* ある要素の直下にある要素だけを取得するには?

* 指定した要素の次要素を取得するには?

* 指定した要素以降の兄弟要素を取得するには?

* 先頭/末尾の要素だけを取得するには?

* 指定された親要素の先頭/末尾の子要素を取得するには?

* 偶数/奇数番目の要素だけを取得するには?

* 指定したインデックス番号(より大きい/未満)の要素を取得するには?

* 指定された要素直下から特定の子要素だけを取得するには?

* 指定したセレクタ以外の要素を取得するには?

* 配下に特定のテキストを含んだ要素を取得するには?

* 空要素だけを取得するには?

* 何らかの子要素を持つ要素を取得するには?

* 指定した子要素を持つ要素を取得するには?

* 子要素が1つだけである要素を取得するには?

* 属性の値によって取得要素を絞り込むには?

* 複数の属性フィルタを組み合わせるには?

* フォーム要素やヘッダ要素を取得するには?

* 特定の状態にある要素のみを取得するには?

第1回 セレクタ編 - @IT

これをきっかけに曖昧なところをいったん全部整理しようと思います。

後の記事でまた詳しく書きます。

#diary

プログラマ、あるいはIT技術者の週末はどう過ごしていますか? 技術の記事をメインとした私のブログは 週末になるとアクセス数が普段の60%しかありません。。。 多分平日はみんな仕事でいろいろと検索していると思います。 週末はやはり余裕を持ってリラックスしていますよね。

やはり週末の直前はエンターテーメントの記事を書こうと思ってます。 自分もリラックスが必要だし、 それにあわせた気持ちを記事の形で残してもいいですよね。

#flex

Flex3 builderにはスタンドアロンとEclipseのプラインの形があります。

しかしFlex Builder 3.0.2 Professional Plug-Inは Eclipse3.2.2、3.3、3.4しか対応していません。

Eclipse3.5に載せる場合はFlexのインストール完了後

以下のように設定してください。


  • Eclipseルートディレクトリ\linksフォルダにあるcom.adobe.flexbuilder.feature.core.linkファイルを開く
  • path=<Flex Builder 3 Plug-inのディレクトリ> に編集
    • デフォルトではpath=以降のディレクトリが書いてあるはずなので、"path="だけを追加すればOK
  • Eclipseを再起動し、パースペクティブにはFlex開発を選択

Windows7でOKでした。MacOS Xで同じやり方ではダメでした。

ネットでもいろいろ検索しましたが、

やはりMacではうまく動作してくれないみたいで、

しょうがなくスタンドアロンをインストールしました。


参考サイト: Flex Builder 3 Plug-in: “Eclipse 3.5 Galileo”でFlex開発 | t.p.fields - web+tech info