CSSにおけるセレクタの固有性(詳細度)の計算式

CSS

固有性(specificity)の計算式 CSS3 ではセレクタの下記手順で固有性(specificity)を求めます(CSS2では否定セレクタが存在しないだけで計算式は同様)。 ID属性の数を a とする) 他の属性セレクタ、擬似クラスの数を b とする タイプセレクタ(要素)の数を c と…

DOMオブジェクトとスクリプトエンジンオブジェクト間の循環参照における IE6 SP2- のメモリリークパターン

概要 IE6 SP2- には下記条件でページの unload 時にメモリリークするバグが存在します。 「DOMオブジェクト」と「スクリプトエンジンオブジェクト」間という異なるエンジン間で循環参照している クロージャがローカル変数に格納されているDOMオブジェクトを…

typeof null === 'object' は ECMAScript 3 の仕様バグ

ECMAScript 3 の typeof 演算子 typeof演算子は対象の型を返す演算子ですが、null に適用すると "object" が返ってきます。 console.log(typeof null === 'object'); // true では、null は Object 型なのか、というとそうではなくて仕様バグだったりします…

Date() と new Date() は等価ではない

概要 Native Object のコンストラクタの中には関数呼び出しとコンストラクタ呼び出しが同じ動作になるものがあります。例えば、Array() は new Array() と等価です。 new Array(1, 2, 3); // [1, 2, 3] Array(1, 2, 3); // [1, 2, 3] 対して、Date() は new …

MDN ではfor文の第一要素を初期化式(initial-expression)と説明している

概要 for文の第一要素で変数宣言するコードは次のようになります。 for (var i = 0; i < 10; i++) { alert(i); } この時、var i = 0 が「式」であるかのように誤解されることがあるようです。 ECMAScript 3 では ECMAScript 3 では ExpressionNoIn と Variab…

ECMAScript 5 規定の undefined は書き換え不可能

概要 次のようなコードをよく見ます。 undefined = 1; // 1 (function () { var undefined; // 同名のローカル変数を定義 alert(undefined); // undefined })(); ところが、ECMAScript 5.1 規定の undefined は書き換え不可能([[Writable]]: false)です。 15…

DOM Events の「バブルアップ」の語源は MDN

バブルアップの語源 DOM L2 Events には親要素にイベントが伝播していくイベントバブル動作(Event bubbling)があり、これを「バブルアップ」と解説されているサイトをたまに見ますが、語源はMDNにあったようです。 (英語版には "bubble up" とあり、翻訳によ…

Google Chrome のページ翻訳機能は [日本語のページ] を英語と判定する事がある

概要 Google Chrome 12 日本語版は仕様書リンク のページを [英語のページ] と判定して日本語に翻訳しようとする。 再現ソース HTMLソース。 <html lang="ja"> <head> <meta charset="UTF-8" /> <title>仕様書リンク</title> .htaccess Header set Content-Language jaHTTPレスポンスヘッダ。 Content-Language: ja 考察(</meta></head></html>…

IE8- の Node#cloneNode はイベントまでコピーする

DOM2 規定の cloneNode() DOM Level 2 Core で規定されている Node#cloneNode は「すべての属性と値をコピーします」が、参照は新しく形成されます。 つまり、<p onclick="alert('click');"> のようにHTMLに埋め込んであるイベントはコピーしますが、addEventListener 等で形成されたイベ</p>…

ECMAScript 5 の Strict Mode でグローバルオブジェクトを得る

Strict Mode ECMAScript 5 には Strict Mode という仕組みがあり、Strict Mode では様々な機能(誤解の元となる機能、危険な機能)が制限されています。Strcit Mode になると関数コード内で this === undefined となり、this でグローバルオブジェクトを参照で…

CSS の簡略記述特性は指定しなかった特性を初期値で上書きする

CSS

簡略記述特性とは 複数の特性を一度に指定できるプロパティの性質を「簡易記述特性」と呼びます。 body { font: normal normal normal medium normal serif; /* font-style, font-variant, font-weight, font-size, line-height, font-family */ } p { borde…

CSSStyleDeclaration#setProperty と CSSStyleDeclaration#removeProperty

概要 IE8 で未定義の CSSStyleDeclaration#setProperty, CSSStyleDeclaration#removeProperty を IE8 で使えるようにしてみようという試みです。 /** * インラインスタイルを定義する */ element.style.backgroundColor = '#fee'; // CSSOM 規定 element.sty…

IE8- は名前付き関数式を関数宣言としても扱う

ECMAScript の 名前付き関数式 ECMAScript には「名前付き関数式」があり、変数に関数式を代入するときに名前をつけることが出来ます。 var hoge = function foo () { alert(foo); // function foo() { ... } alert(foo === hoge); // true }; ここでは "foo…

Google 検索結果をハイライトする Proxomitron フィルタ「Google: High Light by js」

概要 Google検索結果で検索語を最大7つまでハイライトします。(要 JavaScript) 仕様 JavaScript を利用しているため、ブラウザの JavaScript を有効にしてください。 インスタント検索にも対応するため、HTML5 規定の hashchange イベントを利用しています。…

window.setInterval は無限ループしたり実行順を保証できない場合がある

window.setInterval の問題点 window.setInterval には window.setTimeout にない2つの問題点があります。 致命的なエラーが発生してもタスクを繰り返し実行する。 2秒かかるタスクを1秒おきに予約すると、現在のタスクが終わる前に次のタスクが始まる。 エ…

Google で Proxomitron が機能しないのを回避するフィルタ

フィルタ [HTTP headers] In = FALSE Out = TRUE Key = "Accept-Encoding: kill sdch (out) [2011/05/14]" Match = "(\#,|)sdch(,\#|)" Replace = "\@" 原因 Google Chrome は「Shared Dictionary Compression over HTTP (SDCH)」という独自の圧縮プロトコル…

ActiveXObjectとスクリプトエンジン間の循環参照によるメモリリーク

IE6 SP2- の ActiveXObject 周りのメモリリーク問題はあまり知られていないような気がしたので、簡単にまとめておきます。 jQuery や prototype.js では以下の方法で回避しています。 /** * メモリリークを回避する方法 (jQuery および prototype.js 方式) *…

XPath の transelate() を JavaScript で実装する

概要 XPath の translate() を JavaScript で実装しました。 XPath の仕様通りに実装した translate.js と機能拡張した translate-by-array.js があります。 translate.js XPath の仕様通り、String型の値を引数にとります。1文字単位での置換しか行えません…

全角/半角文字を変換する

think49 think49「半角文字 <-> 全角文字」の文字マップを生成してみた。https://ideone.com/sttNv #ECMAScript #JavaScript5月10日 11:46 PM think49 think49to-zenkaku.js : 半角文字を全角文字に変換する - Gist https://gist.github.com/964592 #ECMAScr…

babu_babu_baboo さん作 UUID生成器 (version 5) を試してみる

think49 think49UUID version5 - babu_babu_babooのごみ箱 http://goo.gl/jvDBU #ECMAScript #JavaScript #RFC41223月25日 6:04 PM think49 think49@think49 RFC4122 http://goo.gl/EYSEn に準拠したUUIDを生成するJavaScriptライブラリらしい。3月25日 6:38…

addEventListener に { handleEvent: ... } のリスナーを渡せるかは DOM Level 3 Events の規定外・実装依存です

think49 think49"意地悪を言えば、Object リスナを渡せるかは DOM Events の規定外・実装依存です。"http://goo.gl/zAOue /な、なんだってー!?(AA略) #DOM #JavaScript3月25日 3:14 PM think49 think49document.addEventListener('click', {msg: 'Hello', …

Opera の attachEvent は addEventListener のエイリアスだと思う

think49 think49Opera の attachEvent は addEventListener のエイリアスっぽいなあ。実行順が保証される上に { handleEvent: ... } まで通る。#JavaScript3月26日 1:37 AM think49 think49event.target === event.srcElement, event.currentTarget === this…

var でDontDelete属性が付与されるのは ES3 まで

think49 think49JavaScript Coding Guidelines for Mac OS X: メモリとパフォーマンスの検討事項 http://goo.gl/Pmglp #JavaScript #ES33月22日 1:34 PM think49 think49@think49 そもそも、VariableStatement はDontDelete属性を付与するから delete できな…

compatible-event.js 制作記録

think49 think49イベントリスナについて教えてください - Yahoo!知恵袋 http://goo.gl/0s5bu / attachEvent で実行順を保証したいらしいが、これは難問。handleEvent をキャッシュする必要があると思う…。 #JScript3月23日 5:43 PM think49 think49@think49 …

"use strict"; はグローバルコードに書いても良い

JSLint ではグローバルコードに 'use strict'; を書くとエラーになるが、ECMAScript 5 違反ではないらしい。(おそらく、Crockford氏の独自の思想によるエラーだと思う) think49 think49'use strict'; はグローバルコードに書いてはいけないんだったかな。JSL…

XML宣言 (XMLDecl) は処理命令 (PI) ではない

XML宣言が PROCESSING_INSTRUCTION_NODE だと思っていて、以下のXHTML文書を書いていました。 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <title>XHTML5</title> <…</head></html>

String(value) と value += ''; の違い

think49 think49読んでる。/ Togetter - 「JavaScript の算術演算子と数値変換」 http://togetter.com/li/81156 #ECMAScript2月24日 2:55 PM think49 think49@think49 arg = +arg; で ToNumber が呼び出されるというお話。これは Number() と同じ効果がある…

条件付きコメントと条件付きコンパイルの違い

think49 think49jQuery で条件付きコメントを応用して、MSIE のバージョンを得る方法が書かれたコードがどこかにあったと思うけど忘れてしまった…。github にコードが上がっていて何かのブログ記事で見た覚えがある。2月24日 6:21 PM think49 think49@think4…

Feature Detection と UA Detection どちらを使うべき?

think49 think49Feature Detection は未知の UA に対してのみ行うべき? - by edvakf in hatenahttp://goo.gl/sueOj #JavaScript #ECMAScript2月16日 11:23 PM think49 think49@think49 "Feature Detection は遅いし、既知の UA に対してまで毎回 Feature De…

セミコロン(;) で終わらないHTML文字実体参照は許されるのか

edvakf edvakf実体参照の最後のセミコロンが要らない場合があるって仕様あるのかな?http://less.carbonfairy.org/post/33077132032月16日 5:05 PM edvakf edvakfHTML とテキスト - Entering Passive Mode http://j.mp/gU86RC 「文字実体参照は、& で始まり…