var宣言の巻き上げ(hoisting) JavaScript では関数内部のどこにでもvar文を書くことができますが、これらの変数はその関数の先頭で宣言されたものと同じように動作します。 以下のコードは、1つ目の alert で"undefubed"が表示され、次に"local"が表示されます。 myname = "global"; function func() { alert(myname); var myname = "local"; alert(myname); } func(); このコードは以下の実装と同じような振舞をすることになります。 myname = "global"; function func() { var myname; alert(myname); myname = "local"; alert(myname); } func(); 単独varパターン 前述の
RequireJSって何? 公式サイト RequireJS スライド jQueryRequireJS.pdf 日本語記事だとこの辺? http://zudolab.net/blog/?p=451 要はJavaScriptの依存性解決をしてくれるライブラリで、こんな感じで使えます。 require( [ 'lib/a' ,'lib/b' ,'lib/c' ], function(){ // lib/a.js,lib/b.js,lib/c.jsが読み込まれていることが保証されているcallback require( [ 'lib/d' // lib/a.jsに依存しているライブラリ ,'lib/f'// lib/b.jsに依存しているライブラリ ], function(){ // lib/a.js,lib/b.js,lib/c.js,lib/d.js,lib/e.jsが読み込まれていることが保
IE の window.resize イベントは、いくつかの問題を抱えています。 function onresize() { (何か) } window.attachEvent("onresize", onresize); うっかり無限ループする(無限に再描画が走る) 重い(特にIE6) 解決していきましょう。 無限ループ/無限リドロー問題 resize イベントハンドラの中で、document.body.innerWidht, innerHeight が変化するような操作を行うと、再度 resize イベントが発生し無限ループする現象が発生します(無限リロリロ)。 無限リロリロを回避するために、resize イベントハンドラ内でイベントをデタッチし、再アタッチを繰り返す方法があります(リアタッチ作戦) function onresize() { window.detachEvent("o
たまに以下のようにJavaScriptの文字列リテラルに値が入るアプリを見ることがあります。 <script> var foo="●"; ... </script> 値は「●」の箇所にHTMLエスケープされて出力されます(下の方の例も同じ)。 こんなケースでどうXSSするか?という話です。 簡単にXSSできるケース 以下のパターンだとXSSするのは簡単です。 <script> var foo="●"; var bar="●"; ... </script> ?foo=\&bar=-alert(123)//のような値を与えるだけです。 難しいケース 次はこんなパターンを考えます。 <script> var foo="●"; var bar="●"; ... </script> こうなると難易度はぐっと上がります。というよりも、ほとんどの場合はXSSできません。 しかし、状況次第ではXSSできる
Real REST for Ajax Applications Standards based, resource oriented, content negotiation for JSON, JS, HTML, and more, async middleware-based cross-site support, authentication Persistent Data Modeling JSON Schema-based validation, REST-style handlers, extensible URL-based and chainable querying, facet-based object capability model security (more...)
気づいたことやミスしたことなどメモしていたので確認作業。細かい仕様だったり暗黙のルールだったり、テクニックだったり。JSに慣れていたら当たり前なことばかりかもしらん。 追記のところはid:os0xさんより。ありがとうございます! undefined var a; alert(a) // undefined 宣言だけだとundefined。undefinedというのは、宣言している変数に値が入っていませんよ、ということ。 そしてオブジェクトには無いプロパティとか参照すると出てくる。 var a = 100; alert(a.length); // undefined さらに引数も。 function func(val) { alert(val); } func() // undefined 引数はCallオブジェクトってのに格納される。このオブジェクトはローカルの変数が格納されるオブジェクト
はじめに この記事では、JavaScript 用のテンプレートエンジン Jarty を紹介します。 Jarty (じゃーてぃー) とは、PHP の有名なテンプレートエンジンである Smarty を JavaScript に移植したものです。ただし、完全に再現しているわけではなく、いくつかの機能は制限されています。 Jarty には以下のような機能があります。書式の多くは Smarty 互換です。 変数の置換 {$foo} => "abc" {if} {else} {/if} などの条件分岐 {foreach} {/foreach} などのループ {$foo|upper|escape} などのフィルタ (パイプ) etc. ソースコードは The MIT License として公開しています。 GitHub 上のリポジトリ: http://github.com/kotas/jarty また、
こんにちは、太田です。前回はクロスブラウザの入口として、各ブラウザの特徴をまとめつつ、実際にクロスブラウザなコードを紹介しました。今回はクロスブラウザ対策における基本である、各ブラウザ環境の構築について解説したいと思います。 前回紹介した通りブラウザにはたくさんの種類・バージョンがあります。それぞれが動作する環境を用意するだけでも、一苦労ではすみません。なるべく少ないマシンで、各バージョンをインストールして、さらにデバッグするための環境作りについて紹介します。なお、Safari以外はWindows環境を想定しています。さらに、特に断りがない限りはWindows XP SP3をベースに解説させていただきます。ご了承ください。 各ブラウザのデバッグ環境は近年目覚しいほどの進化を遂げています。統合デバッグ環境の草分けであるFirebugを筆頭に、Safari/Chrome(WebKit)のWeb
RadikoJS 0.1 これは何? Javascriptからradikoを操作する為のオープンソースのライブラリです。 下記のようなコードでradikoを再生&操作できます。 <script src="http://www.google.com/jsapi"></script> <script> google.load("prototype", "1.6.0.2"); google.load("swfobject", "2.1"); </script> <script src="lib/RadikoJS.js"></script> var rj = new RadikoJS(); window.onload = function(){ rj.init(); rj.play("TBS"); } </script> </head> <body> ... 主な機能 Javascriptから
MIX10終了しましたねー。何はともかく皆してIE9の話題ばかりで、ああ、InternetExplorerは愛されてるなあ(色々な意味で)、などというのを横目に、私にとっての最大のニュースはReactive Extensions for JavaScript(RxJS)です。Reactive Extensions(Rx)はこのサイトでもカテゴリーを作ってメソッド探訪なんてやってるぐらいに注目していたわけで、当然MIX10でJavaScript版出すという話を聞いた時からwktkが止まらなかったわけですが、全く期待を裏切らなかった!というか、こいつはヤバいですよ? Reactive Extensionsとは何ぞや、というと、LinqというC#の関数型言語みたいなリスト処理ライブラリ(語弊ありまくり)のイベントとか非同期版です。イベントや非同期処理にたいしてmapとかfilterとかfoldと
今の自分は、出会った人や読んできた本によって、できあがっている あの小冊子は、新聞の付録だったのか、記憶が曖昧で定かではないのだが、1ヶ月に1回程度の頻度で届いていた気がする。オールカラーで内容もさまざまだった気がする。その中には、プロ野球の選手名鑑もあって、私は、母から受け取り、大切にしていた記憶がある。母は、…
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
■ [javascript][link] .sort.call(null)の深淵 - 素人がプログラミングを勉強するブログ JavaScriptで、 [].sort.call(null) がwindowに評価されるのはなぜ?という話。 callにnullを渡すと、thisがwindowになる Arrayのsortは、ソートするものがないとき(つまり、lengthがundefinedか0か1のとき)はthisを返す ということからwindowになると。へぇ。 ただしフレームを使ったサイトの場合、window.lengthが2以上になって上のような挙動にならなかったりするらしい。 ■ [ruby] Hash、Mash、Dash Hashieは、Hashと似たような(?)MashとDashというクラスを提供する。 http://github.com/intridea/hashie/ Mashはo
This is a collection of those very special irregularities, inconstancies and just plain painfully unintuitive moments for the language of the web. 主要なすべてのWebブラウザはJavaScriptエンジンを搭載している。JavaScriptを含んだページをアップしさえすればブラウザ側で動作する。何らかのWebサービスを組み合わせてればそれだけで別のサービスを提供するページを作れる。ブラウザにおけるJavaScript実行性能は日進月歩で高速化しており、WebページやWebアプリケーションを作成する言語として日々その重要性が高まっている。 扱いやすい言語ではあるが、眉を寄せたくなることが多い言語でもある。その不可解で理解しにくい挙動に悩まされたプ
はじめに IE8 には Selectors API という新しい仕様が実装されました。 ということで、今後 DOM 操作 API の主流になるであろう Selectors API についてまとめておきます。 Selectors API が使えるブラウザ 2008 年 3 月 6 日現在の一覧 WebKit Build Archives | WebKit (開発版の Safari) Windows | Official Site for Microsoft Windows 10 Home & Pro OS, laptops, PCs, tablets & more (IE8 の Beta 版) Selectors API とは Selectors API とは W3C で定義された仕様です。詳細に関してはこちらをどうぞ 簡単に説明すると getElementsByTagName や getE
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く