prototype.jsについての質問です。

$('...')で取って来たElementオブジェクトは、prototype.jsで拡張されたメソッドが使用できると有りました。
document.getElementById('...')で取って来たElementは、そのままではそれらの拡張メソッドは使用できませんか?
例えば、prototype.jsがDomのElementクラスを拡張しているとすれば、取って来方に関わらず、全てのElementクラスに拡張メソッドが適用されるように思われるのですが、拡張しているのはDomのElementクラスではないのですか?違うとすれば、DomのElementクラスと、prototype.jsのElementクラスは名前空間(所属しているオブジェクト)的に違っているのでしょうか?また、それぞれの名前空間を教えてください。
コード読めって話なんですが、コード読む前の前知識として知っておきたいと思いました。

回答の条件
  • 1人2回まで
  • 登録:2008/12/31 01:34:16
  • 終了:2009/01/07 01:35:03

回答(1件)

id:language_and_engineering No.1

lang_and_engine回答回数170ベストアンサー獲得回数632008/12/31 18:13:51

ポイント60pt

こんにちは。

こちらの情報が参考になるかもしれません。

http://www.greenspace.info/mt/2007/02/27/javascriptproto.html

いままでElementクラスを介して行っていた処理を,その要素自身のメソッドとして扱う事ができるようになり、より直感的にコードを書けるようになりました。(HTMLの DOM要素を直接拡張してるのがちょっとビミョウなんですが...)

ところが、時々 IEでこの拡張が効かなくなる症状に遭遇しました。



また,お手元の環境で,下記のコードを走らせてみて下さい。


<body>

<input type="button" value="テスト1" onClick="f()">
<input type="button" value="テスト2" onClick="g()">

<div id="my_div">
</div>

<script src="prototype.js"></script>
<script language="JavaScript">

function f()
{
	$("my_div").insert("Hello");
}

function g()
{
	document.getElementById("my_div").insert("Hello");
}

</script>
</body>

prototype 1.6.0.1で実行すると,

Firefox3ではテスト1,2ともに「Hello」が表示されますが,

IE7ではテスト2で「オブジェクトでサポートされていないプロパティまたはメソッドです」が出ました。

id:norisuke3

再び、ご返答ありがとうございます。

私の手元のIE7で試してみた所、テスト1, 2共にHelloと表示されました。また、リンク先のinnerHTMLのテストを行った所、記述されているFirefoxの3つのFilureと同じFailure がIEでも表示されました。(ちなみにSafariでも同様の結果)

ひょっとするとIEで修正が入ったのかもしれませんね。

私のIEのバージョンは、7.05730.13 で、prototype.jsのバージョンは、1.6.0.3です。

要はIEの方で以前問題が有ったので Dom Element を使用するときは、Element.extend(element) としてから拡張メソッドを使いましょう、という事だったのでしょうかね?

2009/01/01 05:53:33
  • id:language_and_engineering
    >私の手元のIE7で試してみた所、テスト1, 2共にHelloと表示されました。
    私のほうのIEは,7.05730.11です。ptrototype.jsのバージョンを1.6.0.1から1.6.0.3に入れ替えてみても,やはりIEはテスト2でこけました。なんででしょうね…。

    >また、リンク先のinnerHTMLのテストを行った所、記述されているFirefoxの3つのFilureと同じFailure がIEでも表示されました。
    こちらは,私もそうなりました。IE修正説が正しいかもしれません。(jQuery万歳!)
  • id:norisuke3
    ホント、なんなんでしょうね。
    jQueryまだ使った事無いんです。流行ってるみたいですね。どんなもんだか使った見たいとは思っている所なんですが。今の所私的には、prototype.js万歳!です。(笑)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません