JavaScript 1.6のArray map()
var functionLength = 5; var parameterList = new Array(functionLength).map(function(_, i){ return "$" + i; }).join(",");
- 期待するparameterListの値: "$0,$1,$2,$3,$4"
- 実際のparameterListの値: ",,,,"
new Array(length)
は配列を生成して長さを指定しているだけなのでmapの互換性コードで言うとif (i in this)
が全てfalseになって関数が呼び出されない…
- 代替:
- map()を使うのをやめて普通にforループで対応する?
- 生成した配列に対して先に
.join(",").split(",")
などとしてものを詰める? - map()を再実装する?
- Arrayを再実装する?
Arrayのメソッドが増えていた
- JavaScript 1.6のメソッド(indexOf(), lastIndexOf(), every(), filter(), forEach(), map(), some())が入った
- build 9841(公開版Gogiの前のスナップショット)から?
- 汎用な簡易記法(Array.forEach, ...)なんかはまだ入ってない
Opera(9.50 beta 2)のSelectionの実装状況
属性/メソッド | 実装 | メモ |
---|---|---|
collapse(parentNode, offset) | × | 最初のRange(getRangeAt(0))のコンテナとオフセットがstart、endともにdocumentと0を指す |
collapseToStart() | × | 最初のRange(getRangeAt(0))のコンテナとオフセットがstart、endともにdocumentと0を指す |
collapseToEnd() | × | 最初のRange(getRangeAt(0))のコンテナとオフセットがstart、endともにdocumentと0を指す |
selectAllChildren(parentNode) | × | 何も選択しない |
deleteFromDocument() | × | 何も削除しない |
rangeCount | ○? | addRange()などがちゃんと実装されていないので0か1 |
getRangeAt(index) | ○? | addRange()などがちゃんと実装されていないので1つ(getRangeAt(0))しかRangeを取れない |
addRange(range) | △ | 何回呼んでも最初に追加したRangeしかリストとして持たない。addRange()後の選択範囲がおかしいことがある (toString()は期待通りの文字列を返すのにページ上ではそれ以上ハイライトしていることがある) |
removeRange(range) | × | Rangeが取り除かれない |
removeAllRanges() | ○ | |
toString() | ○? |
Yahoo!翻訳のクイック辞書をOperaでも使えるようにする
// ==UserScript== // @include http://honyaku.yahoo.co.jp/transtext // ==/UserScript== document.selection.empty = function(){ getSelection().removeAllRanges(); };
Selectors APIと子供セレクタ
あるElementからSelectors APIで子要素を全て取り出したい場合、例えばひとつのol要素から子であるli要素を全て取り出したい場合、querySelectorAllに渡すセレクタはどう書けばいいのでしょうか?ol.querySelectorAll("> li");
かなと考えたんですがセレクタ単体で見ると完全なセレクタではないですよね。
追記 (2008-05-01)
ああ、全ての要素を特定してそこからNodeSelector(querySelector/querySelectorAllを呼んだノード)の子孫にある要素を取るような感じなんですかね。ということはol.querySelectorAll("ol > li");
ですか。そうすると入れ子になったリストの項目まで取れてしまいますね…。
CURIE(WD 2008-04-02)
- CURIEはURIの短縮構文。接頭辞とそれが表す値を予め対応付けておいて使う(wikipediaという接頭辞を「http://en.wikipedia.org/wiki/」として対応付けておけば「http://en.wikipedia.org/wiki/CURIE」を
[][wikipedia:CURIE][]
と記述できる、など)
- 接頭辞が省略されたCURIEの場合(
foo
や:foo
)はデフォルトの接頭辞の値を使う (そういう機構があれば)- XHTML Role(WD 2008-04-07)ならhttp://www.w3.org/1999/xhtml/vocab#
- CURIEであることを明確にするためにブラケットで囲うことが出来る (
[ex:foo]
のように。safe_curie生成規則と呼ばれる) - 空文字列でもCURIEになり得る (接頭辞とコロンは省略可能で、それに続く参照はIRI(RFC 3986)のirelative-ref)
- irelative-ref - irelative-part - ipath-abempty =
*( "/" isegment )
- 「A. XML DTD and Schema Datatypes」のXML Schemaの正規表現は違う?
[\i-[:]][\c-[:]]*:.+
なのでコロンを省略できなくて参照は1文字以上必要?
- irelative-ref - irelative-part - ipath-abempty =
- ...