この半年のつれづれ みなさま、お元気ですか?ブログを書くのが半年ぶり。書きたいと時々思うものの、時が流れるのが早くてあっという間にまた一年の半分が過ぎていきました。この半年何していたかなと自分で手帳を振り返ると、マンスリー手帳の欄に「楽しかったこと」と書いて箇条書きに…

追記:ベンチマークをコメントを元に修正 文字列から要素を作りたい場合、 var temp = document.createElement('div'); temp.innerHTML = '<span>foo bar fizz buzz!</span>'; とやることが多い。 だが、不要なdiv要素ができて気持ち悪いし、for文でchildNodesをひとつずつ処理する必要があって、不便。 divの中にhead要素を入れることはできないので、innerHTML=''としても、要素は作られない。 RangeのcreateContxtualFragmentを使うと、こういった問題を避けることができる。 例えば、上のコードをcreateContextualFragmentを使って書き直すと、 var range = document.createRange(); range.createCon
Nicholas C. Zakas is a web software engineer who specializes in user interface design and implementation for web applications using JavaScript, Dynamic HTML, CSS, XML, and XSLT. Nicholas C. Zakas氏がNCZOnlineのLearning from XAuth: Cross-domain localStorageの記事で、XAuthで採用されている機能を紹介している。XAuthは複数のドメイン間でデータを共有するための機能を提供してくれる。氏はXAuthで採用された方法は複数の違うドメインの間で永続的にデータを共有するテクニックとして素晴らしい方法だとしており、簡単なサンプルコードも含めて説明している
Daftar Serta Masuk Saat ini Di Situs Slots Online Terpilih Ojekslot Seperti yang kita pahami waktu ini ada sangat banyak permainan slot online paling sederhana yang dapat dimainkan dalam sekejap hanya cukup masuk di sana saja ojekslot terunggul. Di sini dapat ada sangat banyak bermacam permainan luar biasa yang pastinya dapat anda temukan dengan ringan. Beraneka permainan terbaik di sini dapat and
ばらけてきたのでこちらにまとめます。 索引 位置の設定 css(name,value) 位置の取得 css(name) offset() position() scrollTop() / scrollLeft() event.pageY / event.pageX サイズの設定 css(name,value) / height(value) / width(value) サイズの取得 css(name) / height() / width() attr(clientHeight / offsetHeight / scrollHeight) outerHeight() / innerHeight() コンテナ要素の取得 offsetParent() 解説 位置の設定 css(name,value) 対象要素を指定した位置に配置できます。単位を省略した場合はピクセル単位となります。 $('#
addEventListenerの第二引数は、関数以外にも、handleEventをメソッドとして持ったオブジェクトも渡すことが出来る。 window.addEventListener("click", { handleEvent: function (e) { console.log(e); } }, false); また、この仕様を利用すると、 ({ run: function () { window.addEventListener("click", this, false); this.counter = 0; }, handleEvent: function () { this.counter++ if (this.counter < 3) alert(this.counter + "clicked!"); else this.destroy(); }, destroy: fun
2007-12-22 カテゴリ: Client Side タグ: JavaScript Tips Unicode JSON さっきはPerlにはまるとか言っておきながら結局JavaScript… JavaScriptの文字列を、\uXXXXの形式のUnicodeEscapeSequenceにエスケープする関数を書きました。 JavaScriptの文字列をJSONとかでよく見かける、 \u672c\u65e5\u306f\u6674\u5929\u306a\u308a の形式の文字列に変換する関数です。ソースやサンプルは続きで。 ソース var unicodeEscape = function(str) { var code, pref = {1: '\\u000', 2: '\\u00', 3: '\\u0', 4: '\\u'}; return str.replace(/\W/g, fu
JavaScriptDebouncing Javascript Methods | Unscriptable.com 密に処理が実行されてしまうのを避けるため、二つのかたちがあるとのこと。下のデモ。throttleは、0.5秒ごとに点の位置が変わる。debounceは、0.5秒いると赤くなる。 デモ throttleひとつ目は一定間隔以内の呼び出しは間引いて無視する方法。イベントの発生頻度が多く、処理が重い場合に使う。 Function.prototype.throttle = function(threshold, alt){ threshold = threshold || 100; var me = this; var last = Date.now(); return function(){ var now = Date.now(); if(now - last debounceも
以下のエントリーを見て FirebugのmonitorEventsが動かない - Enjoy*Study で、実際はどうなんだろうと試してみた。 ちなみに monitorEvents とは Firebug のコンソールで >>> monitorEvents(document.body) と打ち込むと document.body にあがってきた全てのイベントをモニタリングできる >>> monitorEvents(document.body, 'click') と打ち込むと document.body にあがってきたクリックイベントをモニタリングできる >>> monitorEvents($('target')) もちろん document.body 以外もできる そんな機能 たしかに、現在の Firebug 1系 ではこれがバグっててまったく機能してない! なんで今まで気がつかなかったんだ
JavaScriptでは初期化されていない変数には全て「undefined」という値が入っています。 var a; alert(a); //undefinedが入っている これを利用して、変数が定義済みかどうかを判別することが可能です。…が、やり方がいろいろあるみたいなので、まとめてみることにします。 undefinedと比較する if (a === undefined) { alert("aは未定義"); } グローバル変数として、そのまんまundefinedという名前の変数が用意されているので、それと比較するやり方。一番素直な方法ですが、JavaScriptにおいては良くない書き方とされています。 undefinedは予約語ではなく、単なる変数です。だから上書きすることができるし、関数スコープ内で同名のローカル変数を作ることもできます。(ただし最近の処理系ではconst扱いになって上書
こんちは、中村です。 先日マピオンラボよりリリースしたiPad用地図「マピオンタッチ デラックス」のコアとなるフリースクロール地図ライブラリの開発を担当させて頂きました。せっかくなのでターゲットブラウザをMobileSafariに設定し、比較的スペックがプアなiPhone3Gや3GSでも十分な速度で動作するようJavaScript部分の高速化をアレコレ調べてみたのでまとめてみます。一番低スペックなiPhone3Gで実際にどの程度早くなるかをタイマーで計測してみましたってのが本エントリーのミソです。 JavaScriptパフォーマンスチェック - Googleドキュメント 1. new Object より {}(Objectリテラル) オブジェクトを1万個生成するならばリテラルで記述することで約26ms高速化! loop=10000; for(var i=0;i<loop;i++){}; /
JSON文字列をevalして値を取りたいときに挙動が妙ではまった、という話を聞いたので、Firefox1.5上のFireBugのコンソールで何パターンか試してみた。 {"key":"value"}というJSONデータが文字列で渡ってきて、それをevalしてJavaScriptの値として使いたい、という想定。 間違ったJSON文字列をevalした場合 >>> jsonstr = "{key:\"value\"}" "{key:"value"}" >>> var obj = eval(jsonstr) >>> obj "value" >>> typeof(obj) "string"JSONのオブジェクトでは、ラベルも""でくくって文字列にしないといけないのだが、まずはそれを忘れた場合を試してみた。結果として返ってくるのは、なんとJSONのハッシュの要素にしたつもりの文字列のみ。 正しいJSON
配列をシャッフル、つまりランダムに要素の位置を入れ替えるというのを、sortメソッドを使ってやってみたのだけど、明らかにダメダメなものになってしまった。その後、あーでもないこーでもないと考えたのだけど、算数が得意すぎて頭が痛くなった。ということを某所でぼやいたらはてのくんがコードを見つけてくれた。どうやらFisher-Yatesという有名なアルゴリズムでやると良いらしい。 最初に書いたコードは、 var a = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); a.sort( function (a, b) { return Math.ceil(Math.random() * 3) - 2; } ); というもの。sortメソッドは、パラメータに与えられた関数が負の値・0・正の値を返すことによって要素の順序を決定するので、その関数がランダムに値を返せばランダ
※追記:あまりにも記事タイトルが適当すぎて我ながら日本語でおkと思ったのでタイトルを変えました。 http://labs.cybozu.co.jp/blog/kazuho/archives/2006/12/oo-settimeout.php http://blog.livedoor.jp/dankogai/archives/50714622.html このネタはmalaさんが1年半前に通過した地点なのである程度常識の部類かと思ってました。 でもdankogaiがわざわざやるってことは知らない人も多そうだし、malaさんが同じネタをまたやるようにも思えないので、ついでにLDRに現在使われてるFunction.prototype.laterとかを紹介してみる。 Function.prototype.later = function(ms){ var self = this; return fu
<script type="text/javascript"><!-- function print_r(obj) { var count_obj = 0; function _output(str) { document.writeln(str + "<br/>"); } function _print_r(obj, name, level) { var s = ""; if (obj == undefined || level > 4) return; for (var i = 0; i < level; i++) { s += " | "; } s += " - " + name + ":" + typeof(obj) + "=" + obj; _output(s); if (name == "document" || typeof(obj) != "object") return;
ここでは Macromedia Flash のモーション設定にあるイージングを考慮した移動を数学的に分析し、実際にどのようなアルゴリズムなのかを調べていきたいと思います。 イージング移動については Class Library の Edging Mover クラスを参考にして下さい。実際にどのような動作をするのかは イージング移動サンプルが参考になると思います。 これらのページでも述べていますが、イージングとは「オブジェクトが移動するときのコマ割を決めるもの」です。直線的に移動させるとき、単に等速で移動させるのではなく、加速度を考慮したアニメーションが可能になります。JavaScript は連続的な動きは実現できず、このコマ割を変えることは非常に重要で強力なものとなります。 では、実際にイージングを考慮した直線移動について調べていきたいと思いますが、上述した通り重要なのは「コマ割」です。この
AutoPageLoaderのコードを大幅に変えた。 $Xを使った。 ページの継ぎ足しにDocumentFragmentを経由するようにした 他のスクリプトがページの構造を変えたときに、正常にpageElementを取得できなかったバグを修正した DocumentFragmentについては、http://purl.org/jintrick/Personal/documentFragment.htmlの記事を参考にした。 DocumentFragmentはE4Xの<>のようなもので、appendChildするだけでいっぺんに複数のノードを貼り付けることが出来る。直接appendChildを繰り返すよりも軽くなる。 たとえば、全てのリンクをテキストにする場合。 普通にやると、 var links = document.body.getElementsByTagName('a'); while(
SitePoint: New Articles, Fresh Thinking for Web Developers and Designers SitePointのJavaScript Timer-Based Pseudo-ThreadingにおいてJavaScriptで擬似マルチスレッドプログラミングを実装する基本的な方法が紹介されている。アイディアの根幹は細切れにした関数をsetTimeout()で一定期間区切りにして、順次実行していくというもの。実際のところ、このテクニックを使って擬似マルチスレッドプログラミングを実施するのは開発の手間を考えるとあまり効率のいい方法とはいいにくい。効率のいいマルチスレッド処理を実現するにはWeb Workersを使うというのが現実的といえる。しかし、掲載されているサンプルコードが興味深く、Web Workersが利用できないブラウザ向けの手法として
Latest topics > JavaScriptでテキストファイルを生成してダウンロードさせる 宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! « 世にも奇妙な物語 Main 高橋メソッドなプレゼンツール in XUL リターンズ » JavaScriptでテキストファイルを生成してダウンロードさせる - Oct 05, 2005 どうでもいい小ネタ。 Content-Typeがapplication/octet-streamなデータを受信すると、ブラウザはそのファイルをダウンロードして保存するためのダイアログを表示する(という物が多い)。 data: URLを使うと、URIの中にデータを埋め込むことができる。 この二つの事柄から、applica
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く