JavaScript

HTMLComponentで標準モードか互換モードを見分ける方法

.htcの中でdocument.compatModeを使うと互換・標準モードに関わらずBackComponentになってはまる。呼び出し元HTMLの標準・互換モードを探し当てるにはwindow.document.compatModeを使えばいい。あとdocument.compatModeは互換・標準モードを確認するのに使い…

setExpression

style.setExpressionは知っていたけどElement#setExpressionも使えるのね。IE限定でいまいち使いどころが分からない(--; var foo = document.getElementById('foo'); foo.setExpression('innerHTML','new Date().getTime()');

IE6でposition:fixedがうまくいかないのをfixするhtc

to-Rの西畑さんの講演を聞いてIE6でpositonfixedが動かないのを思い出した。それでそれをどう回避するかというと以下みたいにwindow.onscrollのイベントが発生したときに毎回毎回位置を計算して描画する。このコードって実は問題で描画がスクロールの速度に…

カタカナ⇔ひらがな/全角⇔半角変換(カタカナ対応)

最新版はこちら http://code.google.com/p/kanaxs/ ひらがな⇒カタカナ String.prototype.toKatakanaCase = function() { var i, c, a = []; for(i=this.length-1;0<=i;i--) { c = this.charCodeAt(i); a[i] = (0x3041 <= c && c <= 0x3096) ? c + 0x0060 : c…

全角/半角カタカナ編。失敗。

カタカナの全角→半角を難しく変換するコード。やっている最中に別の方法思いついたので途中でポスト。ひらがな→カタカナは簡単なのでひらがなを半角カタカナに変更するんだったらひらがな→カタカナ→半角カタカナが一番かも...。 コード(途中...) 関数はバギ…

JSで半角→全角変換/日本語はめんどい

よく住所とか登録してくださっていうフォームで、英数字はついつい条件反射的に半角を入力してしまってあとで全角じゃないと駄目だったorz...っていうことがよくあります。 そんなときは簡単なブックマークレット使って自動修正しています。そのブックマーク…

Window Gadgetを制作したときのメモ

Gadget概要 http://twitter.com/shogo4405/の過去ログを任意の数取得してフライアウト(Gadgetの横側に飛び出してくるWindowのこと)に表示するGadgetです。(任意の人のidを入力してその人の過去ログひっぱてくるGadgetのほうがはるかに面白い気が…。) Gadget…

YUI CompressorをANTから利用できるようにする。

はじめに 先日YUI式JavaScript圧縮ツールが公開されたのを見て、色々と遊んでいたわけですが検証とか遊びならいいですが…毎回毎回Javaコマンド叩いて圧縮するのもめんどくさいなと思っていました。1つや2つならANTを利用してJavaタスクを書いて自動化します…

behaviorとaddRule

IEでHTMLElement.prototypeっぽい動作するものを考えているなかで生み出された副産物です。document.styleSheetsのaddRuleとbehavior:expressionをつかってdiv要素のheaderクラスに所属するidをアラートしています。 <html> <head> <style id="behavior"></style> <script> function showElementId(e){ alert(e</head></html>…

Safari3で楽になったHTMLElement Prototyping

今までのSafariではHTMLElement Prototypingをするのに色々とハックする必要がありましたがSafari3からは直球でHTMLElementが実装されていてハックできます。 実装されているHTMLElement系のオブジェクト JavaScriptで機械的に書き出したので漏れがあるかも……

Safari3にinsertAdjacentElementが実装されている。

Safari3対応のinsertAjacent.jsをつくろうかなと思って調査したところinsertAdjacentElementは既に搭載されてました。insertAdjacentHTMLとかinsertAdjacentTextは現段階では実装無。 サンプル // true alert('insertAdjacentElement' in HTMLElement.protot…

連想配列や配列をクエリする。

予備知識 クエリで配列や連想配列を送りたい場合以下の形式でリクエストしてあける。以下のサンプルはURLエンコード前でつ。 // 1.配列ですよ index.html?hoge[]=10&amp;hoge[]=20 // 2.連想配列ですよ index.html?hoge[foo]=foo&amp;hoge[bar]=bar上記1のク…

全置換はどうしたらはやい?

JSである単語を全置換するときにどうしたらはやいのかというベンチマークネタ。例えば、"Hello World!! Hello Worold!! Hello World!!..."で"Hello"を"Foo"に変換したいものとする。その際に正規表現を用いて全置換を行った場合と単純にString#repalceを繰り…

Firebugの日本語版が公開されている件

JavaScripterお馴染みのFirebug。Firebug本家より日本語版がリリースされています。Firebugを利用していなかった方もこれを機に導入してみてはいかがでしょうか? あとFirebugの機能紹介も日本語で掲載されています。そういえばFirebugのソースはgoogleコー…

僕が使うJavaScriptの小技集

小技じゃないよ小枝だよというCMがあった気がしますが…僕がよく使うJavaScriptの小技集です。数は少ないです。偉大なJavaScriptハカーさんはどんな小技持ってるんだろう?気になります。この記事を偶然みてくれたJavaScriptのハカーさんも小技集公開して欲し…

昔調べたが忘れた件

strtime関数を作成していたとき実装パターン1と2についてどちらがいいのだ?と思ったと吟味して結局実装パターン2を採用した覚えがあるけど根拠とか忘れてしまった(--; 実装パターン1 function strftime(s, t) { var d = (t) ? new Date(t) : new Date(); re…

正規表現がよく使えない子のsprintfの実装

sprintfをJavaScriptで利用できるように頑張って移植してたとき正規表現を一杯つかって実装していたわけですが…僕の頭では正規表現で実装できなくて別の方法をとった覚えがあります。そのときのソースコードの展開。sprintfの修飾子(?)(%からはじまる奴)で…

サイ本とクイックリファレンス

サイ本5版(http://http://www.oreilly.com/catalog/jscript5/index.html)の日本語訳がようやくでるよと思ったら… 本書は『JavaScript: The Definitive Guide, Fifth Edition』の日本語版です。原書のリファレンス部分を「クイックリファレンス」シリーズと…

HTMLElement Prototyping 2007

HTMLElement Prototypingとは? divやspanなどのHTML要素に独自メソッドを追加する為のprototype拡張の手法です。これを応用するとIEやOperaで採用されているinsertAdjacentHTMLをfxで利用できるようにしたりSafariで利用できるようになります。 各ブラウザ毎…

KonquerorとHTMLElement Prototyping

IEやSafari2シリーズに続いてKonquerorでもHTMLElement Prototypingする為のエントリ。 方法その1 3.5.4ではHTMLElementが直球であるのでそれを利用する。いつくらいからHTMLElementがあるかは調べられませんでした。秋口に4系が出ると思うの4系でも利用でき…

insertAdjacent.js改(それSafari2でも)

以前、fxでinsertAdjacent系メソッドを利用できるようにするもの作成してましたが、今度はSafari2にも対応させました。当然fxでも動きます。 ソース直貼とダウンロードできるようにしいてますのでお持ち帰りでどうぞ。ライセンスはご自由に!(パブリックドメ…

自身の所属するオブジェクトを調べる再考

昔、document.scriptsを利用したら最初から用意されているから便利でfxでは自分で実装しちゃぇみたいなエントリ書きましたがSafari2で挫折。 Safari2だと document.scriptsがあるにはあるけどなんちゃって実装(?)みたいで。document.scriptsの値がいつになっ…

Safari2 de HTMLElement Prototyping

Safari2(1は知らない)の話ですがfxにあるHTMLElement.prototypeをいじれないかなって調べてみました。Safari2でもHTMLElement.prototypeみたいなことができそうです。 対応表 fxでのそれ Safari2でのそれ おまじない Document.prototype window['[[DOMDocu…

JavaScriptでUndoRedoするためのなにか

方法論? ふとJavaScriptでUndoRedo機構がエレガントにつくれないかと思ってなんかごさごさやっていたんですがそれっぽいものができたのでアプローチをポスト。UndoRedo機構つくる為の方法論としていくつか考えてみました。 前やったことの逆算。次やることの…

scope chain

いまさらながらスコープとスコープチェーンの話。スコープチェーンについて分かったつもりになっていたのですが以下のサンプルコードのfooの値は○○○だ!って思ってたけど違った。 foo = 'hoge'; function hoge(){ var foo = 'foo'; function foo(){}; alert(…

OperaとhasOwnProperty

Opera8では o = {1:1, 3:3, 5:5, foo:'foo'}; for(i in o){ alert(o.hasOwnProperty(i)); // false, false, false, true }; o.hasOwnProperty(1); // true o.hasOwnProperty('1'); // false fxやieでは for(i in o){ alert(o.hasOwnProperty(i)); // true, t…

document.writeハック

ハックその1 document.write = function() { var arg = []; var scripts = document.scripts; for(var i=0,f=arguments.length;i

fxでdocument.scripts対応となんか

fxでdocument.scripts対応 id:shogo4405:20070206:1170741017でfxは非対応なんだかんだといっていますがdocument.scriptsはdocument.getElementsByTagName('script')とニアリーイコールなので以下のコードを任意の場所に追加することでfx系でdocument.script…

document.scriptsと自分自身が属するscript要素を取得

IE(確か5からある気がす)とOpera(8で確認)は document.scripts というものがあります。これってdocument.getElementsByTagName('script')で取得できる奴と同等(まったく同じではない)です。まぁfxにはないけど…(fxでも対応させられるけど…) <html> <head> <script id="foo"> alert(documen</script></head></html>…

insertAdjacent.js

どっかで見たことあるんですが見つからない…というわけでfxでinsertAdjacent系が利用できるものをつくりました。これ使ってdocument.writeハックするとなんか面白いことできそうです。ちなみにinsertAdjacent系はIEとOperaでは利用可能です。お持ち帰りでお…