:tetsuharu @saneyuki_s addEventListenerに指定した無名関数をremoveEventListenerしたいばあい、event.currentTarget.removeEventListener(event.type, arguments.callee)ってやればいいことに気付いた 2010-10-18 23:51:46
IEはwindow.resizeがめっちゃ重いです。案の定、uupaaさんがすばらしいまとめと対策を書いていたので、ほとんどそのままjQueryのイベントで使えるようにプラグインの形にぶち込みました。 if (document.documentElement.uniqueID) (function ($, document_) { function size() { var root = document_.documentElement, body = document_.body; return { w: root && root.clientWidth || body.clientWidth, h: root && root.clientHeight || body.clientHeight }; } var lock_ = 0, size_, use_; $.event.speci
よくあるやつです。ぼんやり眺めてると、とても癒されます。 2014/2/25 追記: 全面的に書き直しました。 // https://github.com/norahiko/sort-visualize var helper = { range: function(min, max) { var res = []; for(var i = min; i < max; i++) { res.push(i); } return res; }, shuffle: function(ary) { for(var i = ary.length - 1; 0 <= i; i--) { var rnd = Math.random() * (i + 1) | 0; helper.swap(ary, i, rnd); } }, swap: function(ary, a, b) { if(a < 0 ||
The Search for a Trusted 메이저사이트: A World of Thrills, Security, and Immersive GamingdErsPOId - December 1, 2023In the dynamic world of online entertainment, the quest for finding a trustworthy 메이저사이트, or major site, is akin to navigating through a labyrinthine digital jungle. Much like the adventurers of old scouring for hidden treasures, modern-day netizens are on the lookout for that one platform
IE の window.resize イベントは、いくつかの問題を抱えています。 function onresize() { (何か) } window.attachEvent("onresize", onresize); うっかり無限ループする(無限に再描画が走る) 重い(特にIE6) 解決していきましょう。 無限ループ/無限リドロー問題 resize イベントハンドラの中で、document.body.innerWidht, innerHeight が変化するような操作を行うと、再度 resize イベントが発生し無限ループする現象が発生します(無限リロリロ)。 無限リロリロを回避するために、resize イベントハンドラ内でイベントをデタッチし、再アタッチを繰り返す方法があります(リアタッチ作戦) function onresize() { window.detachEvent("o
jQuery UI の tabs や accordion といったウィジェット系プラグインでは、専用のプラグイン定義関数 $.widget でプラグイン定義することで、一環性のあるプラグイン API を利用者に提供しています。 今回は、$.widget を使ったプラグインの定義方法について調べてみました。 ui.core.js の入手 $.widget は jQuery UI の ui.core.js というソースファイル内に定義されてます。 公式サイト(http://jqueryui.com/download)よりプラグイン一式をダウンロードし、zip ファイルを解凍すると、以下パスに ui.core.js があるので、これを読み込み $.widget を使用できるようにします。 jquery-ui-1.7.2.custom/development-bundle/ui/ui.core.j
Thumbsはスマートフォン対応サイトのJavaScriptデバッグをデスクトップから手軽にするライブラリ。 ThumbsはJavaScript制のオープンソース・ソフトウェア。最近ではスマートフォンに最適化されたWebサイトを開発することも多くなってきた。HTMLコーディングは慣れれば問題ないだろうが、面倒なのがJavaScriptのデバッグだ。 デスクトップでデバッグ HTML5を使いつつJavaScriptを組み合わせたりすると、そのデバッグが大変だ。スマートフォンでしか取れないイベントを使っていて動かないとシミュレータを使っていてもストレスになる。そこでThumbsを使ってみよう。 ThumbsはデスクトップのSafari(またはGoogle Chrome)やiOS、AndroidのWebブラウザで共通のイベントが取れるようになるライブラリだ。例えばタップしたアクションをデスクトッ
活躍の舞台をどんどん広げているJavaScript。本連載では、JavaScript関連書の執筆でおなじみの古籏一浩氏が、最新の活用Tipsから今後注目のAjax/JavaScriptライブラリーの解説まで、“楽しくできて役立つネタ”をお届けします。
JavaScriptから外部ドメインにあるAPIを呼び出すために使われるJSONPですが、scriptタグを動的に追加する方法(下記の記事など)JSONPの取得時にサーバ過負荷などでエラーが出た場合、エラー処理ができないという欠点がありました。 クロスドメインJavaScript呼び出しをクラス化, クロージャにも対応 - Okiraku Programming scriptタグに onerror= という属性を付加するとエラー発生時にスクリプトを実行させることができるブラウザもあります。しかし試してみると、 Firefox: サーバがステータス4xx, 5xxを返した際にonerrorが実行される。 Safari: サーバがステータス404を返した際にのみonerrorが実行される。 Opera: 実行されない IE: 実行されない といったように、ブラウザごとに挙動がまちまち。 またス
前回は配列およびeachについて読んでいきました。 今回は、前回軽く触れたjQueryの初期化について詳しく見ていきたいと思います(クエリセレクタ/エレメント操作まわりの話はまた今度)。 対象 jQuery 1.5.0 よんでみよう jQueryのソースは、外側をfunctionで囲まれています。 (function( window, undefined ) { // さまざまな初期化 // ... })(window); このfunctionはwindowとundefinedという二つの引数を取っています。 javascriptのundefinedというのは未定義の値を表現するのに使われていますが、有名な話として、これは定数や予約語ではありません。 var undefined="hello"; alert(undefined); // "hello" このように、ユーザが同名の変数を定義
スライド1: 2 分でわかる uupaa.js~ Debug Navigation ~uupaa.js@gmail.com スライド2: まず スライド3: 階層ナビゲーション• スタックトレースを表示する機能– Firebug などに搭載されている– 今日の主役は、この「ナビ子」さん スライド4: uupaa.js と ナビ子function xboot(uu) {}uu.css.size.get(uu.id("id"));• ナビ子「今ここよ」• ユーザ「ありがとう」uucsssizeget < xboot < _fire スライド5: $(function() {});jQuery と ナビ子$("#id").width();• ナビ子「今ここよ」• ユーザ「…え ? 」• ナビ子「え ? 」curCSS() < (?)() < each() < getWH< css() <
JavaScript には基本的にブロックスコープというものが存在しない。どうしてもブロックスコープを扱いたいときは function 式を使ったりする。 var a = 10; { var a = 20; print(a); // 20 } print(a); // 20 var a = 10; (function () { var a = 20; print(a); // 20 })(); print(a); // 10 だがやはりブロックスコープがあったほうが便利ということで JavaScript 1.7 では let 式、let 文、let 宣言が導入される。 var a = 10; let (a = 20) { print(a); // 20 } print(a); // 10 しかしこれでは対応するブラウザが Firefox 2 以降などに限られる。ところが、with 文とオブ
HTML5をサポートしていないIE6〜IE8で、node.innerHTML = " ..."; のように HTML5 で追加された新要素含んだ文字列を innerHTML に与えると、次のいずれかの条件が成立した場合に親子関係の崩れたサブツリーを生成してしまいます。 innerHTML の前に document.createElement() が実行されていない node が DOM Tree に参加していない(オンザフライ) これらを回避するには、IE6〜IE8で以下のようします。 document.createElement("section"); // HTML5 Shiv function build(fragment) { // @param HTMLDocumentFragmentString: "<nav>...</nav>" // @return DocumentFrag
追記: jQ的には解決していませんが、素の JavaScript を使った回避方法がわかりました。IE8以下では、オンザフライで作成した要素に対して innerHTML すると謎要素が作成されてしまうといった現象がでるため、一度要素片を、DOMツリー( body とかね ) にぶらさげてから innerHTML すると回避できました。 つまり、オンザフライな↓ではだめで… var div = document.createElement("div"); // 作る div.innerHTML = "<section>ほげー</section>"; // 突っ込む → ι(´Д`υ) ↓のようにすると謎の挙動を回避できます。 var div = document.createElement("div"); // 作る document.body.appendChild(div); // あて
表題の件について。 地味な話ですが、javascript(というかECMAの仕様)にあるMath.random()には、乱数のシードを与える方法が無いようです。 そんなわけで、われわれ一般市民は各ブラウザが独自に実装している、謎のシードで初期化された謎のアルゴリズムで作られた乱数を通常使うわけですが。 Mozillaからこんなの出てた。 曰く、Math.random()のシードによる初期化は、ブラウジングセッションごとに1度しか行われないと。 で、シードはまあ、かぶる率そんなに高くなさそうなので、そのシードをUSERの(擬似的な)ID代わりにしてしまえば、ユーザーのトラッキングができるよーん、とのこと。 はじめ読んだとき、「おおー、かっけー!」と思ったんですが、ちょっと待て。 シードって外から取れんのか。 というわけで、色々調べたところ、各ブラウザは(多分IEも)線形合同法による擬似乱数を
JavaScriptについては一通りマスターした中上級者がさらに上を目指すための高度でかつ有用なテクニックを盛り込んでいます。デザインパターン、コーディングパターン、アンチパターンに基づき、いままで以上にJavaScriptを使いこなし、プログラミングの力を向上させ、JavaScriptのエキスパートになるための知識と技を豊富に紹介。次のステップに踏み出したいプログラマにとって貴重な情報源となる一冊です。Yahoo!のエンジニアとして数々の有用なアプリケーションの開発に携わってきた著者がJavaScriptを200%使いこなすための秘伝を伝授します。 まえがき 1章 はじめに 1.1 パターン 1.2 JavaScriptの概念 1.2.1 オブジェクト指向 1.2.2 クラスというものはない 1.2.3 プロトタイプ 1.2.4 環境 1.3 ECMAScript 5 1.4 JSLin
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く