タグ

ブックマーク / blog.enjoyxstudy.com (6)

  • グローバルコンテキストでビルトインオブジェクト/関数と同名のものを定義した場合の動作 - Enjoy*Study

    下記のようなページを実行すると、Firefox11とIE8だとエラーになって、Chrome18だとエラーとならずにalertが実行されました。 <html> <body> <script type="text/javascript"> var alert = alert; alert(1); </script> </body> </html> Firefox、IEの動作だと、var宣言された時点で、右辺のその変数が未定義扱いとなっているようです。 もともとは、下記のようなコードがFirefoxで動作しなくて気がつきました。 (これはグローバルコンテキストで実行された場合で、関数内なら意図した動作(window.URLが代入)になります) var URL = window.URL || window.webkitURL;

    グローバルコンテキストでビルトインオブジェクト/関数と同名のものを定義した場合の動作 - Enjoy*Study
    raimon49
    raimon49 2012/05/02
    コメント欄も
  • テキストエリアでリターンキーを押した際に、submitイベントの発生を抑止する方法 - Enjoy*Study

    テキストエリアでのリターンキーで、submitイベントが発生しないようにする場合、ブラウザ毎にどのような処理を書けばいいのか調べてみました。(submitイベント自体に処理を追加せずに、テキストエリアでのイベントで制御したかったので) テキストエリアでのリターンを拾えるイベントとしては、下記の3つがあります。 keypress keydown keyup イベントをキャンセルする方法は、IEのJScriptの実装と、DOM 2のEventモデルでの実装である下記の2パターンを試しました。 event.preventDefault() event.returnValue=false そして確認の結果、上記のイベント×キャンセル処理の組み合わせでsubmitイベントがキャンセル出来るのは、下記のパターンとなりました。 IE 6 keydown - event.returnValue=false

    テキストエリアでリターンキーを押した際に、submitイベントの発生を抑止する方法 - Enjoy*Study
    raimon49
    raimon49 2008/01/23
    IEはevent.returnValue=false, Firefoxはevent.preventDefault()
  • Enjoy×Study - JavaScriptの正規表現で、メタ文字の"\s","\d"はクロスブラウザでの互換性が無い。

    正規表現で"\d"は、"[0-9]"と一緒だとずっと思っていましたが、FireFoxでは全角数字もマッチします。(FireFox1.5.0.4で確認) /\d/.test('1') // =>true /\d/.test('1') // =>trueちなみにIE 6、Opera 9では、"/\d/.test('1')"はfalseとなります。 気になったので、"\s"、"\w"についても調べてみたところ、下記のような結果になりました。 パターンFireFox 1.5,2.0IE 6, 7Opera 9 /\s/.test(' ') // 半角truetruetrue /\s/.test(' ') // 全角truefalsetrue /\d/.test('1') // 半角truetruetrue /\d/.test('1') // 全角truefalsefalse /\w/.test('

    Enjoy×Study - JavaScriptの正規表現で、メタ文字の"\s","\d"はクロスブラウザでの互換性が無い。
    raimon49
    raimon49 2008/01/08
    これは知らないと危険。
  • FireFoxの標準モードでは、エレメントのstyle.width,heightに数値での設定が出来ない - Enjoy*Study

    // FireFox 1.5の標準モードでは代入できない(互換モードならOK) // IE 6,Opera 9ではモードかかわらずOK document.getElementById('hoge').style.height = 1000; document.getElementById('hoge').style.width = 1000; // これはOK document.getElementById('hoge').style.height = '1000px'; document.getElementById('hoge').style.width = '1000px';FireFoxが、標準/互換モードでこんな制限かけているのにビックリしました。 普段から'px'をちゃんと付けていれば、はまることもありませんが、ついつい数値で書いちゃう人も多いのではないでしょうか。(実は私も…

    FireFoxの標準モードでは、エレメントのstyle.width,heightに数値での設定が出来ない - Enjoy*Study
    raimon49
    raimon49 2007/12/25
    普段からpx付けるようにしないと。
  • Enjoy*Study - undefined

    変数、プロパティが定義されていない(undefined)かの判定処理を、その時々で適当いろいろな書き方をしてしまっているので、自分の中で整理してみます。 良く使う/見かけるのは、下記の3つです。 (!x) (x == undefined) (typeof x == 'undefined') 上記はそれぞれ成立する条件が異なりますので、下記にそれぞれ記載します。 (!x) コード一番短くて済むので多用するのですが、、 !xが成立するのは、xがundefinedの場合だけじゃなくて、多岐にわたるので使用時に注意が必要だと思います。 !xがtrueになるようなものには下記があります。 (思いつくままに挙げてみたので、これもそうだよ!!とかあったらコメントいただけると助かります) undefined null false 0 NaN '' (空文字) プロパティが存在するかどうかで、数値(Numb

    Enjoy*Study - undefined
    raimon49
    raimon49 2007/10/26
    !xを評価してtrueとなるのは, undefined, null, false, 0, NaN, '' (空文字) x == undefinedを評価してtrueとなるのは, undefined, null
  • テキストボックス内でカーソル位置を移動する方法 - Enjoy*Study

    テキストボックス内のカーソル位置を末尾に設定する方法を調べてみました。 IE 6.0、Opera 8.5 の場合 var elm = document.getElementById('text'); // テキストエリアのelement取得 elm.focus(); // Operaの為(IEでは無くても大丈夫) var range = elm.createTextRange(); range.move('character', elm.value.length); range.select();当初、elm.focus()は入れてなかったのですが、Operaではこうしないとちゃんとカーソルが移動してくれません。(この動きに悩まされました) IEだと、range.select()で、フォーカスが移動し、カーソル位置もちゃんと末尾に行くのですが、Operaだと、フォーカスは移動するが、テキス

    テキストボックス内でカーソル位置を移動する方法 - Enjoy*Study
  • 1