素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

Prototype.jsのSelectorのバグ

prototype/src at master · sstephenson/prototype · GitHubを読んで、234行目くらいの、

      'checked': "[@checked]",
      'disabled': "[(@disabled) and (@type!='hidden')]",
      'enabled': "[not(@disabled) and (@type!='hidden')]",

という、CSSの疑似クラスをXPathに変換する部分はうまく動いていないんじゃないかと思った。
で、下のHTMLを書いて、:checkedなのにchecked属性を持っていない状態があるのかどうかを調べた。:checkedとcheckedが同期していれば青、同期していなければ赤になる。

<html>
	<head>
		<title>checked pseudo classes test</title>
		<style>
			#state {
				width: 100px;
				height: 100px;
				background-color: blue;
			}
			:checked:not([checked]) ~ #state {
				background-color:red;
			}
		</style>
	</head>
	<body>
		<input type="checkbox" />
		<div id="state" />
	</body>
</html>

結果は、ブラウザ依存だった。
おそらく、:enabledや:disabledも同じ。
FirefoxOperaは赤になる時があって、WebKitはいつでも青のまま。
なので、Prototype.jsを使う時は気をつけていたほうがいい。