はじめまして!クロカワリュートです 180mm という屋号のマークアップエンジニアです でもフリーランスじゃないです 五反田の制作会社に勤めています 現在転活中です
こんちは、中村です。 先日マピオンラボよりリリースしたiPad用地図「マピオンタッチ デラックス」のコアとなるフリースクロール地図ライブラリの開発を担当させて頂きました。せっかくなのでターゲットブラウザをMobileSafariに設定し、比較的スペックがプアなiPhone3Gや3GSでも十分な速度で動作するようJavaScript部分の高速化をアレコレ調べてみたのでまとめてみます。一番低スペックなiPhone3Gで実際にどの程度早くなるかをタイマーで計測してみましたってのが本エントリーのミソです。 JavaScriptパフォーマンスチェック - Googleドキュメント 1. new Object より {}(Objectリテラル) オブジェクトを1万個生成するならばリテラルで記述することで約26ms高速化! loop=10000; for(var i=0;i<loop;i++){}; /
30 best practices to boost your web application performance - Web User Interface Architect JavaScriptコーディング等を書く上でのパフォーマンス確認事項30。 自分へのインプット&メモがてらにちょっとまとめてみます。 JavaScript DOMの操作は可能な限りやめる eval, new Function() は遅いので可能な限り使わない withステートメントを使わない(使った事ないですが) for-in 文ではなく for 文を使う。 ループの中で try-catch ではなく、try-catchの中にループを置く グローバル変数をなるべく使わない aaa+='AAA';aaa+='BBB'; の方が aaa+='AAA'+'BBB';より速い 複数の文字列連結には、Array で文字列
指でダイレクトに触ってなめらかに反応する、あのiPadのUIは、あっという間に使う人々を魅了する。しかし、そのまま使い続けているうちに、実はMacBookのようなマウスを利用したUIほど細かい操作ができないことに、いずれ気付く。 iPadのUIには、指先での操作を考慮して、適度なサイズと間隔が保持されている。そのため、マウスのUIほど機能を詰め込むことが出来ず、厳選した機能のみが提供されることになるのだろう。 iPadのSafariに不足しているもの それにしても、今のSafariにどう考えても不足していると感じる機能が、二つある。 表示中のページを閉じる機能 ページ内検索 表示中のページを閉じる機能 例えば、http://b.hatena.ne.jp/hotentry で、気になる記事へのリンクをクリックすると、新規ページが開いてリンク先にジャンプする。 気になる記事を読み終わったら、今
などという煽り気味なタイトルをついつけてしまいたくなる記事がGoogleCodeBlogに掲載されていました。 最初のほうはごく普通にJavaScriptを使ったRIAアプリケーションはどうしても起動が遅くなるため、それをどう減らすか、というテーマにそって書かれています。 方法として挙げられているのは、最初にすべてを読み込まず、モジュール単位で分割して遅延ローディングすること。ただし、それだけだと回線速度が遅く不安定なモバイル環境では問題が生じるためHTML5のキャッシュ機能を利用するといいとのこと。 遅延ローディングのためのさまざまな手法の得失や、例えばユーザーデータを読み込むときには動的ロードしない、というようにユーザーの操作を妨害しないよう留意することなどについても述べられていてそれだけでもノウハウとして十分に有意義なのですが、決め手として最後に出てくる方法がすごいです。 その方法と
Detect an AJAX Request in PHP サーバへのリクエストがAjaxからか、そうでないかを調べるPHPコードが紹介されています。 ブラウザがAjaxでリクエストすると、「X-Requested-With : XMLHttpRequest」のようなヘッダーを投げているようで、それをサーバ変数で受け取って判断するコードです。 次のように書けばOKみたい。 if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { echo "ajax からのリクエストです"; } 2,3年前の記事でいくつか該当のエントリがあり、既にご存知の方も多いのかも。 関連エントリ 【IT-rescue】AJAXによるアクセス
jQuery.suggestをIEの日本語に対応 jQuery.suggestでサジェスト機能を実装しようとしたところIEでの日本語の認識が上手に行きませんでした。 調べてみたところ原因は100行目あたりの以下のコード。 } else if ($input.val().length != prevLength) { if (timeout) clearTimeout(timeout); timeout = setTimeout(suggest, options.delay); prevLength = $input.val().length; } 文字数で変化を取得しているので、たとえば「か」と入力したい場合、最初の「k」を入力した時点でサジェスト機能が動作し、「a」を入力して「か」になった段階では文字数が変わらないのでサジェスト機能が動作しない形になる。 } else if ($inpu
Opera で DOM Mutation Event を使用するコードを追記しました。 まとめを追加しました。 Opera パート2に取得できないケースが見つかったため、パート3 を追加しました。 rhino.jpg(幅:300px, 高さ:227px) を、 <img id="rhino" src="rhino.jpg" width="100" height="75" /> と、100 x 75 で表示している場合を例に、画像本来のサイズを取得する方法をご紹介します。 Firefox, Safari, Google Chrome なら image.naturalWidth と image.naturalHeight を利用します。 image.naturalWidth と image.naturalHeight の初期値は 0 です。画像の読み込みが完了した時点で適切な値に更新されます。
jQueryに文字列に含まれる特定の文字を文字参照へ変換するそのものずばりなメソッドは無い(よね?)が、ダミーの要素を作成し、text()で変換したい文字列をセットしてからhtml()で内容だけ取り出してやるとうまいこと変換することができる。 var s = $("<u/>").text(s).html(); これだけでsが文字参照に変換される。どう変換されるかは各ブラウザのinnerHTMLの仕様に依存するのだと思う。 思いついた時はreplace()並べるよりはマシかなと思ったけど、直観的なコードではないので一長一短。各ブラウザがきっと良きに計らってくれるであろう点はなかなか良い気もする。 短いエントリだ。
/* モダンブラウザ用 */ body { width: 95%; margin: 20px auto; max-width: 75em; } /* 最後にWinIE6用トリック(スターハック) */ * html body { width: expression(document.documentElement.clientWidth > parseInt(currentStyle["max-width"],10)*parseInt(document.documentElement.currentStyle.fontSize,10)*4/3 ? currentStyle["max-width"] : "inherit"); } fontSizeはptベースで返ってくるので96dpiと想定して変換してます(*4/3のところ)。 互換モードの場合はdocument.documentEleme
jQueryを良くする25のTIPS ネタ元:Improve your jQuery - 25 excellent tips ちょっと多いですが、かなり良いTIPSがまとまっています。 Google AJAX Libraries APIを利用しよう Google AJAX Libraries APIを活用すればすばやくライブラリを読み込むことが出来ます。 <script src="http://www.google.com/jsapi"></script> <script type="text/javascript"> // Load jQuery google.load("jquery", "1.2.6"); google.setOnLoadCallback(function() { // Your code goes here. }); </script> 直接読み込むことも出来ます。
JavaScriptwindowのonbeforeunloadハンドラで、Event#returnValueに値を入れると、ページ遷移直前にユーザーに確認ダイアログを表示することができる(んだって)。 以下コードの正常動作を、Firefox 2.0とIE 7で確認した。Operaでは実行されなかった。 window.onbeforeunload = function(event){ event = event || window.event; event.returnValue = '?'; } 以下は、IEとFirefoxの確認ダイアログのキャプチャ。 MochiKitでは、Event#confirmUnloadで確認ダイアログを出せる。 connect(window, 'onbeforeunload', function(event){ event.confirmUnload('?'
デスクトップアプリを開発してると、ListView のカラム幅が足りなくなったときに「My Docume...」のように自動的に末尾を「...」で埋めて切りつめてくれる機能がある。ウェブでも同じことをやりたかったので、作ってみた。 まず、文字列の幅を測定するには、 <span id="ruler" style="visibility:hidden;position:absolute;"> </span> みたいな隠しエレメントを用意しておいて、 String.prototype.getExtent = function(ruler) { var e = $(ruler); var c; while (c = e.lastChild) e.removeChild(c); var text = e.appendChild(document.createTextNode(this)); var
My experiments with .Net : Combine CSS with JS and make it into a single download! 1つのファイルにJavaScriptとCSSをまとめて記述する方法。 まず、test.jscss というファイルを作って、次のように内容を記述します。 <!-- /* function t(){alert('test');} <!-- */ <!-- body { background-color: Aqua; } そして、次のようにJavaScriptとCSSを呼び出す際に先ほど作成したtest.jscssを指定することができます。 <html> <link type="text/css" rel="stylesheet" href="test.jscss" /> <script type="text/javascript"
まずは最近知って便利だと思ったCSSの小技をひとつ。 文章の最後に、「※(米印)」などで注釈を入れたいときに、CSSのみで行の開始位置を揃えるのにすごくシンプルなやり方がこれ。 .note { padding-left:1em; text-indent:-1em; } <p class=”note”>※米印を使う場合はこいつが便利。<br /> 改行してもこの通り。ちゃんと開始位置が揃ってる。</p> 「padding-left : 1em;」でまず1文字分右に動かして、「text-indent : -1em;」で最初の行だけ1文字分左に出す、ということらしいです。これ考えた人はえらいっすねぇ。 他には開始位置を揃えるいわゆる「ぶら下げ」をCSSでやる場合、<div>タグの入れ子を使ってもいいが、<dl><dt><dd>の定義型リストを使うのがおすすめ。Definition Listの略で
ブログのコメント投稿フォームをちょっぴり親切にする Permalink URL http://www.magicvox.net/archive/2007/01161250/ Posted by ぴろり Posted at 2007/01/16 12:50 Trackbacks 関連記事 (0) Comments コメント (2) Post Comment コメントできます Category ブログのコメント投稿フォームに初期メッセージを設定しておき、入力フォーカスが当たった時点でこれを消すという tips が紹介されています。元ネタである@Style さんのコード で 3 箇所に渡ってハードコーディングされている初期メッセージ周りを少しスマートにしてみました。 初期メッセージにコメント欄で使えるタグの一覧や注意事項を書いておくなどすればユーザビリティの点でも好ましいですね。
komagataです。 Javascriptで何か書こうと思ったときにどのライブラリをベースにして作るかで非常に悩みます。一端特定のライブラリに依存してしまうと途中で変更するのが難しそうですし、コアオブジェクトを汚染しているものは混ぜると動かなくなる組み合わせもあります。 別に「Mochikitにしよう!」とか宣言して決めてしまえばいいじゃないかという意見もありますが、妙にそんなところが気にかかってなかなかプログラムを書き始められないことが多いです。 そこで、「どうしても使いたい関数はインライン化すればいいんじゃないか?」と思ったので試してみました。 どういうことかというと、例えばprototype.jsのObject.extendを使って以下のように書きたいところを・・・ var dst = {'foo':1, 'bar':2}; var src = {'foo':100}; var r
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く