JavaScript

Event Driven JavaScript

document.createEventとdispatchEvent、addEventListenerを使ってイベントドリブンに書いたJavaScriptがオレブーム(ただし、IE非対応*1 )なので、軽く紹介してみたいと思います。具体的には、AutoPatchWork (Google Chrome Dev用のextension)をイベントドリ…

XMLHttpRequest Level 2 と wedata バックアップ

http://ss-o.net/json/ 以下に対して、.htaccessで Header append Access-Control-Allow-Origin: *という指定をして、ヘッダーにAccess-Control-Allow-Originをつけているので、(*はすべてのドメインからのリクエストを許可) http://ss-o.net/json/wedataAut…

Tween2.js

JSTweener ライクなアニメーション code snippets - 0xFFについて、アニメーションを止めたり、再開したいという要望をもらったので、機能追加してみました。 os0x's gist: 123561 — Gist サンプル:Tween2 黒い四角にマウスポインタを乗せると止まって(pause…

JavaScriptの勉強会資料

JavaScript社内勉強会|渋谷ではたらくベンチャーCTOのブログ 実践JavaScript - Event編 - 株式会社ALBERT 勉強会資料 月一で講師をしている、社内向けJavaScript勉強会の資料です。 初回はEvent周りの一般的な話(実際、割と良く目にするネタばかりだと思い…

「JavaScriptでconcatはもう使うべきではないのかも」なんてことはない

JavaScriptでconcatはもう使うべきではないのかもしれない (Kanasansoft Web Lab.)に早まるなとツッコミを入れる。まず、当たり前ですがpushを使うべきところでconcatを使う理由はありません。配列に要素を追加したいならpushを使うのは当然ですね。 あえてc…

『JavaScript:The Good Parts』にツッコミ

『JavaScript:The Good Parts』にツッコミ (Kanasansoft Web Lab.)へのレスも兼ねて。 Good Parts読んでない方は、A Life in Shinjuku.: JavaScript: The Good Partsを見れば大体書いてある。 かんそう 良書だと思うのだけど、初心者には説明不足なのが惜し…

JavaScriptは悪くない

JavaScript の不思議な面白さ - Yahoo! JAPAN Tech Blog JavaScript の不思議な面白さ - 第二回 - Yahoo! JAPAN Tech Blog JavaScript の不思議な面白さ - 第三回 - Yahoo! JAPAN Tech Blog JavaScript の不思議な面白さ - 第四回 - Yahoo! JAPAN Tech Blog …

IEでlabel内の画像をクリック可能にする

ウノウラボ by Zynga Japan: IEでlabelの子要素に画像を含めるをより汎用的に実装してみます。まず、修正方針は以下の2点。 HTML側に処理を書かない(onclickは使わない) IEだけで処理されるようにする 素直に書いてみるとこういった感じになります。 /*@cc_o…

OperaのCanvasでParticles(Sand/Snow)

ふと、Saqoosha 先生の Snow*1をCanvasで出来たりするのかなーと気になって、ちょっと調べてみたら、OperaのCanvasが凄いと言われたので、早速移植してみました。http://ss-o.net/test/opera.snow.html (Operaのロゴは404: Page not foundから) んー、(簡略…

大量に同じ画像を表示したいとき

画像周りの速度メモ - #生存戦略 、それは - subtechの件。最終手段として、CSSを使う。 .hatenastar{ display:inline-block; width:11px; height:10px; background:url('http://s.hatena.ne.jp/images/star.gif'); } (function(){ var now = new Date*1; fo…

富豪URI

URI - 素人がプログラミングを勉強していたブログ function URI(uri,base){ var a, _loc = location, self = this; if (base) {//via nanto_vi var XHTML_NS = "http://www.w3.org/1999/xhtml"; var XML_NS = "http://www.w3.org/XML/1998/namespace"; a = d…

期間限定、Google Chrome 2 の HiResTimeでベンチマーク

dev版のGoogle Chrome 2.0.166.1を弄っていたら、HiResTimeというグローバル関数を見つけました。perlとかでお馴染みの高精度のタイマー関数のようです。 さっそく試してみましたが、非常に高性能でお薦めです……と言いたいところなのですが、実はChromiumで…

inspect window(and Safari3と4の判定)

前回のをちょっと改良してwindowオブジェクトを解析してみた。 http://ss-o.net/test/window.htmlで、Safari3からSafari4betaで新たに増えたグローバルプロパティを調べてみた。 getSearchEngine postMessage setSearchEngine CSSVariablesDeclaration CSSVa…

inspect a

あまり知られていない気がしますが、HTMLのa要素はhref属性だけでなく(locationと同じ)hostやpathnameなどの属性を持っています(読み取り専用のようなものなので、属性を持つという言い方は不適切かもしれません)。 ただ、pathnameについて、例によってブラ…

OperaのpostMessageの実装(Opera10でLDR Full Feedを動くように)

OperaでLDR Full Feed - 0xFFがOperaで動かない件を調べてみたら、Opera10でpostMessageの実装が修正させていることに気がつきました。元々、OperaはHTML5のドラフト時の仕様に沿って document.postMesage を実装していました。その後 HTML5側ではwindow.pos…

JavaScriptによるブラウザ判別の実際

1 行でブラウザ判別を行うスクリプト (IE 用の日本語紹介記事、Firefox、Safari 用の日本語紹介記事) を発端に、SpiderMonkey の判別とブラウザ判別: Days on the Moon や JavaScript でのブラウザ判別 - 「仕様の盲点」ではなく、「プロパティの有無」を使…

主要ブラウザで動くCSSを追加する関数

GM_addStyleの実装と最適化 - 0xFFに関連して、「IEでGM_addStyleみたいな関数ってどう書けばいいんだろ」とつぶやいたら、fubさんにcreateStyleSheetってのを教えてもらいました。で、調べてみたらcreateStyleSheetとcssTextで割と簡単に書けるみたいなので…

GM_addStyleの実装と最適化

GreasemonkeyのGM_addStyle関数は呼び出すたびにhead内にstyle要素を作る。 Greasemonkey 0.8.20080609.0のソースより。 function GM_addStyle(doc, css) { var head, style; head = doc.getElementsByTagName("head")[0]; if (!head) { return; } style = d…

空から降ってくる女の子(ゲームっぽく)

空から女の子が降ってくる - ぼくはまちちゃん!(Hatena)id:murky-satyr先生 の http://gist.github.com/45346 を勉強目的に読んでたら、自分でも書きたくなってついやってしまった。すごく出遅れ感あるけど、折角なので公開。 javascript:H='http://hamachi…

IEでのテキストノード走査の高速化

に釣られて。 HatenaStar.js 1380 行目 テキストノード走査 一番のボトルネックはやはりここですね。IEなので、こんな感じでベタに計測。 makeTextNodes: function(c) { if (c.textNodes || c.textNodePositions || c.documentText) return; if (Ten.Highlig…

arguments.callee.caller で UserJavaScriptのソース取得

最初に要点を述べると、UserJavaScriptのソースはサイト側のScriptから取得することが不可能ではないので、UserJavaScript にパスワードなどを書き込む必要がある場合は実行を許可するサイトに十分に気をつけましょう(そもそも書き込まないで済むならそれに…

0〜1000に含まれる0をカウントする

練習 - krystal: プログラミング超初心者(文系) - Rubyist 0〜1000に含まれる0をカウントする - (rubikitch loves (Emacs Ruby CUI Books)) 0〜1000に含まれる0をカウントする - みずぴー日記JavaScriptで。 var count = 0;(new Array(1001)).join(',').spli…

リンクになっていないURLを新規タブで開くGreasemonkey Script

Text URL Linker という Greasemonkey Script を CodeRepos (と Text URL Linker for Greasemonkey) にあげました。Firefox の Greasemonkey, Opera(9.50以降) の UserJavaScript, Safari の GreaseKit, Google Chrome の Greasemetal, Chromium の Greasemo…

不要なテキストノードの除去

li要素などを改行すると、要素と要素の間に半角スペース分の余白が現れる件について調べてみた。 | Blog hamashun.com関連の、にツッコミしてみる。 innerHTMLの書き換えはaddEventListenerしたイベントが消えたりするのと、 Manabuさんの実装だとli要素の中…

配列を作らない$X関数 (失敗)

XPathのevaluate結果に対する処理をスマートに書くための便利関数 - 今日もスミマセン。を見て、思いついた。$X関数は便利だけど、配列を詰めなおす処理が今ひとつだと感じてました。 で、その改案です。http://gist.github.com/19461 function $XA (exp, co…

JSTweener ライクなアニメーション code snippets

JSTweenerライクな軽量アニメーションが手軽に実現できる、tween.jsというのを書いてみました。 Greasemonkey Script を書く際に、@requireで手軽に使えるサイズのシンプルなアニメーション code snippets がほしかったので、強引に18行という短さに収めてい…

Bug 442333 - Remove eval's optional second argument

442333 – Remove eval's optional second argumentの件。peter.michaux.ca - Module Pattern Provides No Privacy...at least not in JavaScript(TM)によるとFirefox3.1でevalの第2引数は削除されるって話だったけど、http://d.hatena.ne.jp/nokturnalmortum…

等価演算子と厳密等価演算子 in ECMA-262 3rd Edition

高速化 - latest log 等価演算子(==)と厳密等価演算子(===) - ?D of K について。等価演算子と厳密等価演算子はどちらが高速か。もちろんケースバイケースではありますが、どちらかといえば厳密等価演算子が有利です。というのも、ECMA-262 3rd Edition…

prototype汚染問題でhasOwnPropertyを使わないクロスブラウザな方法

いちいちhasOwnPropertyを使わなくてよくする(ジェネレータの使いかた) - 素人がプログラミングを勉強していたブログについて。 2回ループするid:javascripter にジェネレータ使ってるから「2回」ってことはないとツッコマレタ。その通りですね。のは気にな…

外部JavaScriptの動的ロード

JavaScriptからJavaScriptを読み込むのは、(IEに対応する場合は特に)結構面倒です。ちょうど昨日公開されたid:amachangのはてブにアクセスチャートを出す Greasemonkeyでは、こんな実装になっていました。 // for IE if (!document.evaluate) { var script =…