ウレタン系高反発マットレスでよく言及されるのが密度です。それを頑張って分かりやすく説明してみます。
イベントのキーコードの取得には event.keyCode event.charCode の二種類があるんだが、keypressイベントとkeydownイベントとで出方が違うことに気付いた。 keypressとkeydownの表す数値は以下の通り keyCodeにはキーを表す特殊コードを表す数値として出る*1 charCodeにはASCII文字コード表に対応した10進数として出る 以下に幾つか試した結果を書くので参考に。ただ、特殊キーに当たりそうな(ex. windows,無変換, IMEオン時の挙動)ものは環境によって異なりそうなので注意。 keypress ASCII文字コードとして認識できるものはcharCodeに出る そうでないものはkeyCodeに出る IMEオン時にイベントが挙がることは期待できない((keyCodeに229で挙がる時と挙がらない時があった)) 押したキー ch
« DoBeDo 2.5 | メイン | javascript で Query String » javascript: escape(), encodeURI(), encodeURIComponent() 比較 javascript の escape(), encodeURI(), encodeURIComponent() 関数群について、どの文字がエンコードされてどの文字がエンコードされないのか分かりにくいのでまとめておく。 まずは、対象範囲 %20(半角スペース)〜%7E(チルダ~) 元データ !"#$%&'()*+,-./ 0123456789 :;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\]^_` abcdefghijklmnopqrstuvwxyz {|}~ escape() %20%21%22%23%24%25%26%27%28%29*+%2C-
id:cheesepie:20070131:1170172709 最近は、こういう風に JavaScript を勉強する人が増えていてとても嬉しいです ^^ id:cheesepie さん頑張ってください! で、ちょっと配列と連想配列の使いかたが違うようなので、エントリーを書こうと思いました。おせっかいだったらすみません>< ! やっぱり、このへんが JavaScript の難しいところのひとつなのだろうか。 ということで、 JavaScript の配列と連想配列の違い いってみよおー 連想配列とは JavaScript では連想配列は一番シンプルなオブジェクトのことである。つまり、すべてのオブジェクトは連想配列である。 以下のすべての連想配列はまったく同じものである。 // 1 var obj = { hoge: 'hoge' }; // 2 var obj = { 'hoge': 'h
Own Properties は同じだからプロトタイプだけ入れ替える (Firefox Only) id:cheesepie:20070129:1170012588 を見ていて思いつきました。 arguments.__proto__ = Array.prototype; ちなみにクロスブラウザなやり方 3 つ // 1 for(var i = 0, args = []; i < arguments.length; i ++) args[i] = arguments[i]; // 2 arguments = Array.apply(null, arguments); // 注意: コメント欄参照 // 3 for(var n in Array.prototype) arguments[n] = Array.prototype[n]; 別に配列化しなくても配列の関数は使えます 配列のプロトタイ
プロトタイプ function Animal(){}; Animal.prototype = { sleep : function(){}, walk : function(){ alert('noshi, noshi') } }; function Human(){}; Human.prototype = new Animal(); new Human().walk(); // noshi, noshi もっともポピュラだと思われる。 変型プロトタイプ Human.prototype.__proto__ = Animal.prototype; new Human().walk(); // noshi, noshi ほとんどのIEを除くJavaScript処理系で実行可能。裏ワザちっく。 エクステンド /** * extend function * @param {Object} s su
DOM APIを使用して作ったDOMツリー、うまく生成されているか見てみたい事は多々ある。少なくともオイラはある。簡単にテキスト表示してくれると嬉しいなぁと常々思っていたのだが発見した。 Firefox(というかMozilla系かな)限定だろうけどXMLSerializerがあるのだ。 使い方は簡単。 var serializer = new XMLSerializer(); //略 var root = document.createElement('div'); var anchor = document.createElement('a'); var aText = document.createTextNode('はてな'); anchor.setAttribute('href','http://www.hatena.ne.jp/'); anchor.appendChild( aT
グローバル領域に以下の一行を書く <script> var currentScript = (function (e) { if(e.nodeName.toLowerCase() == 'script') return e; return arguments.callee(e.lastChild) })(document); alert(currentScript); </script>こうすることで、currentScript はこの script 要素を指す。 いちおう説明 DOM は構築されるときに、上から順番に構築される。そして、script タグがあると、 script 要素を構築したあとに、スクリプトを実行する。 つまり、スクリプトが実行されたとき script 要素は今まさに作られたばかりであり、それよりも後ろの要素が存在しない。さらにこの script 要素を含むすべての要
文字列操作の比較表: Ruby, Python, JavaScript, Perl, C++ Ruby, Python, JavaScript, Perl, C++ の文字列操作の比較表を作りました。配列操作の比較表の続編です。間違いなどがあったらご指摘いただけると助かります。 Ruby (String) Python (str) JavaScript (String) Perl C++ (std::string)
最近、プロトタイプ的継承の話しが盛り上がっています。 http://blog.livedoor.jp/dankogai/archives/50662064.html http://labs.cybozu.co.jp/blog/kazuho/archives/2006/10/javascript_string.php http://blog.livedoor.jp/dankogai/archives/50662606.html 最終形がやたら複雑になっています でも、実際はあそこまで複雑に書かなくても、できると思います ^^; そう思う理由 P 関数は object 関数の中でローカルのものである。コンストラクタとして使える必要はない。なので、 Atomic な場合でも P は function(){} でいい。 method 関数では P.prototype のプロパティに関数が代入されて
HTML+JavaScriptで、要素のイベントへの関数登録の方法は、主に以下の3つです。 1. 要素タグのなかに属性(onclick="〜"等)を直接記述する。 【例】 <button onclick="alert('!');">TEST</button> 2. 要素オブジェクトのプロパティへ関数を設定する。 【例】 <button id="test">TEST</button> <script> function func(){ alert("!"); } var elem = document.getElementById("test"); elem.onclick = func; </script> 3. 要素オブジェクトのaddEventListenerメソッドまたはattachEventメソッドを使用する。 【例】 <button id="test">TEST</button>
個人的に Ajax を使ったプログラミングをしたことがほとんどない。数回あったけどライブラリ経由で XMLHttpRequest は触らなかった。 仕事でも Prototype.js とか MochiKit とかなので XMLHttpRequest を直接使ったことがない。 用事で使ってみなければならなくなった。 最初に見様見まねで書いたコード //Executable var req = window.XMLHttpRequest ? new XMLHttpRequest() : (function() { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { return new ActiveXObject("Microsoft.XMLHTTP"); } })(); req.onreadystatechange =
マイクロソフトのドキュメントに書いてあったので、 実際にやってみた。 どうも、ローカル変数にグローバルオブジェクトへの参照を キャッシングすると速くなるようだ。 http://www.microsoft.com/japan/msdn/columns/dude/dude100499.aspx たとえば、window オブジェクトを使用するときは、 以下のようにすれば速くなるっぽい。 var w = window; // 以後、w を使用する。 グローバルオブジェクトへの直接アクセス 通常の使い方。 4464 ms window.global = 0; (function(){ console.time("test"); for(var i=0; i<1000000; i++){ window.global++; } console.timeEnd("test"); console.log(
Firefox限定だが、 moz-icon://.拡張子?size=アイコンのサイズ で、拡張子に対応したアイコンを取得できるらしい。 そこでためしに、URLが html, pdf, zip で終わってるリンクに それに対応したアイコン画像を付加する Greasemonkey を作ってみた。 すごいリソース無駄遣いしてるが、これは後でリファクタリングする。 add_mozicon.user.js // ==UserScript== // @name add_mozicon // @include http://* // ==/UserScript== var extensions = [ 'html', 'pdf', 'zip' ]; var items = document.getElementsByTagName("a"); for(var i=0; i<items.length; i
技術メモ帳 - Greasemonkeyで永続的に外部スクリプトを利用する (via Collection & Copy - ブックマーク抜粋 2006/08/18) GM_setValue/GM_getValueで扱えるのは、文字列、整数、真偽値で、そのまま関数やオブジェクトを設定することは出来ないみたいですが、toString/toSourceで文字列としてGM_setValue、GM_getValueで取り出した文字列をevalで復元すれば、何でも永続化出来そうです。 面白いことが、いろいろ出来そうな気がします。 【追記:2006/08/22】 調べてみたら、下記の記事がヒット。参考になりました。 subtechグループ - 'hceT'.sub(/\Z/,'bus').reverse - Greasemonkey の GM_setValue を利用した Hash の保存 そして、実
はてなの人力検索で回答した際に、連想配列ソート関数を作成したので載せておきます。 ※Operaで想定外の動作をする場合があります。追記を参照してください。 <html> <head> <title></title> <script> /** * sortObj 連想配列ソート関数 * @obj 対象オブジェクト * @isKey true : キーでソート * false OR null : 値でソート * @isNumber true : 数値としてソート * false OR null : 文字列としてソート * @isDesc true : 降順ソート * false OR null : 昇順ソート */ function sortObj(obj, isKey, isNumber, isDesc){ var ary = new Array(); for(var i in obj){
GM_setValue / GM_getValue + unsafeWindow.eval を使って 永続的に外部スクリプトを利用する方法を考えてみた。 わざわざ DOM で script要素 を毎回注入するよりも 速いんじゃないかと思う。 Greasemonkeyには、GM_setValue / GM_getValue というのがあって、 GM_setValue("キー", "値") 上記のように入力してあげる事によって、たとえ、 Firefoxを終了させたとしても消えないデータを作成する事が出来る。 そして、それを利用して、 初回のみ XmlHttpRequest で外部スクリプトデータを取得して、 GM_setValue でスクリプトデータを永続化しておき、 二回目以降は、それを GM_getValue して eval するようにした。 以下は、永続的に prototype.js を
Firefox 2 の新機能の一つに JavaScript 1.7 への対応がある。Firefox 2 Beta 2 のリリースも近づき JavaScript 1.7 の新機能もほとんどが実装されてきたのでここにまとめてみる。といっても New in JavaScript 1.7 に大体はまとまっているので補足的な部分など。 識別子の扱い ブロックスコープ 分割代入 イテレータ ジェネレータ 配列内包 参考 なお、ブラウザ上でスクリプトを実行する場合は、JavaScript のバージョンを明記しないと let 、yield がキーワードとして認識されない (Bug 351515) 。 <script type="text/javascript; version=1.7"> JavaScript shell を使う場合は起動時にバージョンを指定するか version 関数を使う。 $ js
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く