タグ

JavaScriptとtipsに関するmattarinのブックマーク (25)

  • プログレッシブレンダリングでUXを向上させるJS非同期読み込みのベストプラクティス | ゆっくりと…

    ブログでは、サイトの高速化に直結する「JavaScript 非同期読み込み」の話題を多数取り上げてきました。タイトルに釣られてこの記事を見てくれている方なら Google Analytics の非同期コードスニペット はご存知でしょうし、規模の大きいサイトやアプリ用に RequireJS などのフレームワークを使っている方もいるでしょう。 GA も RequireJS も、動的に生成したスクリプト要素を DOM に埋め込む「DOM 挿入法」が用いられています。さらに遡れば、Steve Souders が 2009年4月の記事 ノン・ブロッキングなスクリプト読み込み で、6つの手法に分類しています。 果たしてこれらの方法は、サイトの高速化にとってベストなのでしょうか? 答えは2012年12月の海外記事にありました。そこでエントリーでは、日ではほとんど取り上げられていない Frame i

  • JavaScript : 日本語入力時のキーイベント。 - freefielder.jp

    さてさて、JavaScriptで「日本語入力がON & 変換確定時に何か処理をしたい」と考えました。「日語の変換が確定した」という情報を得なくてはなりません。キーイベントを受け取ることで、日本語入力中 / 変換確定 の区別は可能なんだろうか。 手元にある、いくつかのブラウザで挙動を調べてみた。 Firefox 3.6.x (Gecko 1.9.2) : Mac OS X , Windows , Linux(Xubuntu) 日語変換中は、全てのキーで keydown,keypress,keyup,全てのイベントを受け取らない。 確定のエンターキーを押したときのキーアップイベントから復活。 Internet Explorer 8 日本語入力中、keydownにはキーコード"229"が、keyupには押したキーのキーコードが返ってくる。キープレスイベントは発生しない。 日語変換中の 複数

    JavaScript : 日本語入力時のキーイベント。 - freefielder.jp
  • textareaでタブを入力できるようにする - hokaccha memo

    document.querySelector("textarea").addEventListener("keydown", function(e) { if (e.keyCode === 9) { e.preventDefault(); var elem = e.target; var val = elem.value; var pos = elem.selectionStart; elem.value = val.substr(0, pos) + '\t' + val.substr(pos, val.length); elem.setSelectionRange(pos + 1, pos + 1); } }); selectionStartで現在のカーソル位置を取得してタブを間に挟んだ値を入れる。setSelectionRangeでカーソル位置をタブの後ろにもってくる。

    textareaでタブを入力できるようにする - hokaccha memo
  • はてなブックマークのコンテンツの JavaScript を高速化する - IT戦記

    はじめに 「新はてなブックマーク」になったということで、とっても便利になったのですが、ブックマーク一覧ページ*1が若干 JavaScript に時間が掛かっているみたいです。 というわけで 調査してみたいと思います。調査して、改善できそうなところは後で纏めて「はてなアイデア」にでも登録しようと思います。 この日記は調査しながら、過程を書いていくつもりです。 準備 まずは、人のサイトの JavaScript を書き換えて試してみるための環境を作ります。 作業用ディレクトリを作る とりあえず、ホームに HatenaJS というディレクトリを作ります。 $ mkdir HatenaJS $ cd HatenaJS CocProxy をダウンロードしてくる 以下から CocProxy というツールをダウンロードしてきます。 http://coderepos.org/share/wiki/CocPr

    はてなブックマークのコンテンツの JavaScript を高速化する - IT戦記
  • HatenaのIDが抜ける件の分析@2ステップで抜ける! - satoru.netの自由帳

    http://blog.isocchi.com/2008/09/hatena.html すげー。そんなことできるんだー。はてなgeekすげえええ と、思って、ソースを見て調査してみたんだけど、意外とめっさ簡単なロジックでびっくり。w 1.GET:投げる。entries.jsonにリクエスト。RKSパラメーター取得。 http://s.hatena.ne.jp/entries.jsonにGET {"rks":"***********************","can_comment":0,"entries":[]} がjsonで返ってくる。こんなかの、[RKS]パラメータを記録。 2:GET:もっかい投げる。star.add.jsonにリクエスト。 1.で取得した[RKS]パラメータをひっつけて、再度GETする。 http://s.hatena.ne.jp/star.add.json?ur

    HatenaのIDが抜ける件の分析@2ステップで抜ける! - satoru.netの自由帳
  • ブラウザの表示領域のサイズを取得する方法。 - Enjoy*Study

    ブラウザの表示領域を取得するに当たって、「ブラウザの種類」×「表示モード(標準/互換)」によって参照するプロパティが変わってきます。 IE、FireFox、Opera、Safariにて、表示モード毎に参照すべきプロパティをまとめてみました。(Safariについては2007/05/20に追記) 調査したのは、下記のプロパティです。 window.innerWidth window.innerHeight document.body.scrollWidth document.body.scrollHeight document.body.offsetWidth document.body.offsetHeight document.body.clientWidth document.body.clientHeight document.documentElement.scrollWidth d

    ブラウザの表示領域のサイズを取得する方法。 - Enjoy*Study
  • JavaScript Tips & Technique

    操作方法 → キー: 次のページへ ← キー: 前のページへ ↑ キー: 目次ページへ ↓ キー: 目次ページから戻る 目次ページでは ← → キーで一覧を移動し、クリックで選択します 10 年。 世界が JavaScript の真の実力を発見するのに要した時間である。 1995 年、Netscape 社の Brendan Eich により開発・設計された JavaScript は、「世界で最も誤解されたプログラミング言語」などと呼ばれもした、 ともすれば不遇とすらいい得る歳月を経て、あたりのそこここに満ち充ちていた「Web の旧来的なインタラクションの窮屈さを革命したい」という思いによって、ふたたび表舞台に招来された。 JavaScript は、Web の「あちら側」と「こちら側」とを取り結ぶ、もっとも古くてもっとも新しい、そして、もっとも重要な技術だ。次の 10 年を自らの手で創り出す

  • 第30回 JavaScriptの動作を軽くするための工夫:ITpro

    今回はJavaScriptとWebページの表示・操作の体感速度について考えてみます。というのは,JavaScriptのせいでWebページの表示や操作などの速度が遅くなっている,と感じることがあるからです。 現在のWebサイトでは,JavaScriptを使って使い勝手を向上することは,ごく当たり前に行われています。例えば,動的にページを書き換えたり,ページ遷移を行わずにサーバーと通信を行ってデータを取得したりと,JavaScriptを使うことで,Webサイトをより便利に,より使いやすくすることができます。 Ajaxという言葉がはやってから,もう2年以上がたつんですよね。何年か前,JavaScriptはじゃまで,セキュリティを低下させる不要なものだと見なされていた頃がありました。しかしそれから一変して,「JavaScriptをがんがん使ってもいい」という空気になったことで,Webサイトを作成す

    第30回 JavaScriptの動作を軽くするための工夫:ITpro
  • JavaScript でこんなパッケージ管理はどうか? - IT戦記

    まず、以下のような package 関数を作る。 function package(name) { package.__hash__ = package.__hash__ || {}; if (!package.__hash__.hasOwnProperty(name)) { package.__hash__[name] = { def: function(name, value) { return this[name] = value; } } } return package.__hash__[name] } で、こんな感じで使う // ここは hoge の名前空間 with (package('hoge')) { def('var0', 1); // 変数は def 関数で定義 def('var2', 2); alert(var0); // 1 alert(var2); // 2 }

    JavaScript でこんなパッケージ管理はどうか? - IT戦記
  • for 文を setTimeout に変換する - IT戦記

    for 文で 100 項目とか 1000 項目とかあるテストケースを処理するとブラウザが固まる。 こんなダイアログが表示されます。 ということで for 文を setTimeout や setInterval に変換する事で定期的にブラウザに処理を戻すことができる。 // ここでは console.log のところでログを取ってますが // 通常は処理が入ります。 for (var i = 0; i < 3; i ++) { console.log('a' + i); } /* * 結果 * a0 * a1 * a2 */ これをまず while 文に変換 var i = 0; while (true) { if (!(i < 3)) break; console.log('a' + i); i ++; } /* * 結果 * a0 * a1 * a2 */ で、 setTimeout に

    for 文を setTimeout に変換する - IT戦記
  • JavaScriptがウェブを遅くする--今できる緩和策を考える

    JavaScriptの1行が、今日のブログ技術に多くのパワーを与えている。ウィジェット、共有ツール、訪問者の追跡、広告。多くの場合、ブロガーは新しい技術を自分のブログに導入するのに、JavaScriptを1行加えるだけでいい。問題は、それらの1行のJavaScriptが多数組み合わされたときに起こる。 物理学には、非線形性と呼ばれる有名な現象がある。多くの異なることが相互作用すると、結果を予測するのが難しくなるのだ。ソフトウェアの場合も違いはない。多くのコンポーネントを組み合わせると、何が起こるか予測できなくなる。これは、各コンポーネントはスタンドアロンのように振る舞うが、それらは決まった区画内のスペースと閲覧者の注意を争う関係にあるからだ。そして、この争いはすべての人を傷つける。読者、ブロガー、サービス。誰もが不満を抱くことになる。 この記事では、多くのJavaScriptの1行がどうし

    JavaScriptがウェブを遅くする--今できる緩和策を考える
  • 404 Blog Not Found:怠翻 - JavaScriptでありがちな9つのシマッタ

    2007年08月17日01:15 カテゴリ翻訳/紹介Lightweight Languages 怠翻 - JavaScriptでありがちな9つのシマッタ 私自身結構シマッタしちゃうので。 Nine Javascript Gotchas 尻カンマ注意 以下のコードはFireFoxでは動きますが、Internet Explorer (以下IE)では問題になります。 var theObj = { city : "Boston", state : "MA", } 最後にカンマが入らないよう注意しましょう。 浮気なthisは何を見てるやら 以下のコードで、thisは何を指しているでしょうか。 <input type="button" value="Gotcha!" id="MyButton" > <script> var MyObject = function () { this.alertMess

    404 Blog Not Found:怠翻 - JavaScriptでありがちな9つのシマッタ
    mattarin
    mattarin 2007/08/17
    ハマりがちなポイント
  • javascriptを理解するためのたった2つの大切なこと

    9割ぐらいはハッシュ何がハッシュなのかjavascriptで存在するほとんどのオブジェクトの実体はハッシュだよ。 var arr = [0,1,2,3]; とかをみると配列(人によってはリスト)に見えると思う。でも実際は違うんだ。 これは var has = {0:0,1:1,2:2,3:3}; と基的には等価なんだ。ただちょっと束縛されているメソッド(インターフェイス)が違うだけ。 ためしに arr[4] = 4; arr['x'] = 'string'; arr[-1] = -1; としてみよう。 Firebugで確認してみると[0, 1, 2, undefined, 4]というような値がかえってくるよ。 でもarr[-1]やarr['x']の値は保存されてないのかな?そんなことはないちゃんとアクセスできるんだ。 それどころかarr.xで'string'がかえってくるんだ。 別の例を

    javascriptを理解するためのたった2つの大切なこと
  • Windows 版 Safari で JavaScript Console を表示する方法 - IT戦記

    ちなみに Mac OSX 版では ~/Library/Preferences/com.apple.Safari.plist に IncludeDebugMenu を 1 として追加すれば Debug メニューが表示されます。 $ defaults write com.apple.Safari IncludeDebugMenu 1 なので Windows 版でも同じだろうと思って C:\Program Files\Safari\Safari.resources\Defaults.plistをエディタで開いてみると XML だったので <key>IncludeDebugMenu</key><true/> や <key>IncludeDebugMenu</key><integer>1</integer> や <key>IncludeDebugMenu</key><string>1</string

    Windows 版 Safari で JavaScript Console を表示する方法 - IT戦記
  • [を] JavaScriptで画像を先読みして、なかったらリンクを消す

    JavaScriptで画像を先読みして、なかったらリンクを消す 2007-06-10-4 [Programming] ちょっと前に Asamasearch (http://find.x0.to/as/) の画像検索で、 JavaScriptによる画像の先読み処理(画像存在判定)をいれていた。 そのときのコードはこんな感じ。 <div><a href="画像URL"><img src="サムネイル"></a><img src="画像URL" onerror="this.parentNode.firstChild.firstChild.style.border=0; this.parentNode.firstChild.removeAttribute('href'); this.parentNode.removeChild(this);" onload="this.parentNode.rem

    [を] JavaScriptで画像を先読みして、なかったらリンクを消す
  • YUI Library

    IMPORTANT: The YUI library is no longer actively maintained. Please see this announcement for more information. YUI is a free, open source JavaScript and CSS library for building richly interactive web applications. Get Started Start using YUI 3.18.1 in two easy steps.

  • WEB制作者とブロガーの『遊び心をくすぐる』26のブックマークまとめ*ホームページを作る人のネタ帳

    今回まとめた内容をあらかじめ言っておきます。 CSS JavaScript イメージギャラリー Generator Ajax です。 とりわけJavaScriptCSSは色々なブログでも使える為、ブロガーも頑張れば導入可能なプログラム等をなるべく多めにまとめました。 これは『個人的な感想』のテーマで、私個人が遊び心をくすぐられたものをまとめています。 あくまで私がくすぐられたもので、他の人がくすぐられるかどうかまでは保障できませんので、上記キーワードに興味の無い方は特にあらかじめご了承ください。 送信ボタンなどをちょっとセクシーにするCSS 送信ボタンなどをちょっとクールにかわいらしくする為の知識。 JavaScriptがいらないイメージマップの切り出しサンプル 画像にマップを埋め込んで華麗に表示する為の知識。 口で言うより、デモを見たほうが早い。 チェックボックスとラジオボタンをオシャ

    WEB制作者とブロガーの『遊び心をくすぐる』26のブックマークまとめ*ホームページを作る人のネタ帳
  • gmailで添付ファイルが自動でアップロードされるしくみ - bits and bytes

    gmailでメールを書くとき、添付するファイルを選んでからしばらくすると、いつの間にか添付ファイルがアップロードされています。 添付するファイルを選ぶと、はじめファイル名が表示されていたのが 自動的にアップロードされて、名前とファイルサイズが表示されています! 実は、あまり名前も聞かなくなった Google Page Creator がリリースされたときにいちばんびっくりしたのはページの右下にこのgmailの自動アップロードとよく似たしくみがあったことでした。で、さっそく解析してマネしてみたことがあります。今回はgmailでその仕組みを見てみます。 ちなみにその Google Page Creator には、ログインすると右下にこんな ファイルをアップロードするのに使う部分があります。 gmailの場合、メールが自動保存されるタイミングでアップロードされているかんじでしたが、こっちのはBr

  • JavaScript で幅に合わせて文字列を切りつめる - Psychs's blog

    デスクトップアプリを開発してると、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

    JavaScript で幅に合わせて文字列を切りつめる - Psychs's blog
    mattarin
    mattarin 2007/05/26
    超クール
  • JavaScript の関数を「引数そのまま返す化」

    関数を「引数そのまま返す化」 // sonomama の s Function.prototype.s = function(arg) this(arg); // 来の処理 return arg; // そのまま返す } 例1 hoge.method(); // ← この hoge を調べたい alertだけ alert(hoge); hoge.method(); 改行めんどいー。 console.logだけ console.log(hoge); hoge.method(); 改行めんどいー。 alert + そのまま返す化 alert.s(hoge).method(); // 1 ステートのまま console.log + そのまま返す化 console.log.s(hoge).method(); // 1 ステートのまま 例2 function hoge() { // ...略...

    JavaScript の関数を「引数そのまま返す化」
    mattarin
    mattarin 2007/05/18
    便利