オリジナルJavaScriptでのDOM操作
6824 ワード
オリジナルJavaScriptでのDOM操作
2011-05-29
JQueryは確かに使いやすいライブラリで、細かいことを考えなくてもいいです.しかし、Webフロントエンドとして、ブラウザの違いを処理し、理解する上で重要な問題です.jsライブラリを使用していない場合について説明します.
1.setAttributeメソッド要素クラス名の設定
jQueryではattr()メソッドをそのまま使えばよいが,原生のJSでは,
さて、冒頭で終わりましたが、この文章の目的はブラウザの違いを紹介しながら、フロントエンドの友达に最も効果的な方法で問題を解決すれば、次のように理解させることです.
2.FireFoxはwindowがありません.イベントオブジェクト
FireFoxにはwindowがありません.eventオブジェクト、eventオブジェクトのみ、IEではwindowのみサポートされています.eventは、他の主流ブラウザでは両方がサポートされているので、一般的には次のように書かれています.
2011-05-29
JQueryは確かに使いやすいライブラリで、細かいことを考えなくてもいいです.しかし、Webフロントエンドとして、ブラウザの違いを処理し、理解する上で重要な問題です.jsライブラリを使用していない場合について説明します.
1.setAttributeメソッド要素クラス名の設定
jQueryではattr()メソッドをそのまま使えばよいが,原生のJSでは,
1
// W3C , W3C , ,IE
2
element.setAttribute(
'class'
,
'newClassName'
)
3
// IE
4
element.setAttribute(
'className'
,
'newClassName'
)
5
// ( javascript)
6
element.className =
'newClassName'
さて、冒頭で終わりましたが、この文章の目的はブラウザの違いを紹介しながら、フロントエンドの友达に最も効果的な方法で問題を解決すれば、次のように理解させることです.
2.FireFoxはwindowがありません.イベントオブジェクト
FireFoxにはwindowがありません.eventオブジェクト、eventオブジェクトのみ、IEではwindowのみサポートされています.eventは、他の主流ブラウザでは両方がサポートされているので、一般的には次のように書かれています.
1
function
handle(e)
2
{
3
e = e || event;
4
...
5
}
3.DOMContentLoadedイベントの
そうだonloadイベントは、ページ /DOMツリーの が し、ピクチャ、スクリプト、スタイルシートなどのすべてのリソースのダウンロードが した にトリガーされます.これは くの のアプリケーションにとって「 すぎる」ため、ユーザー に を えます.この を するために、FFには、onloadよりも く、ページのDOMコンテンツのロードが すると、 のリソースのロードを つことなくトリガされるDOMContentLoadedメソッドが された(これはjquery.ready() の である).01
// jQuery 1.4.2
02
bindReady:
function
() {
03
if
( readyBound ) {
04
return
;
05
}
06
readyBound =
true
;
07
// Catch cases where $(document).ready() is called after the
08
// browser event has already occurred.
09
if
( document.readyState ===
"complete"
) {
10
return
jQuery.ready();
11
}
12
// Mozilla, Opera and webkit nightlies currently support this event
13
if
( document.addEventListener ) {
14
// Use the handy event callback
15
document.addEventListener(
"DOMContentLoaded"
, DOMContentLoaded,
false
);
16
// A fallback to window.onload, that will always work
17
window.addEventListener(
"load"
, jQuery.ready,
false
);
18
// If IE event model is used
19
}
else
if
( document.attachEvent ) {
20
// ensure firing before onload,
21
// maybe late but safe also for iframes
22
document.attachEvent(
"onreadystatechange"
, DOMContentLoaded);
23
// A fallback to window.onload, that will always work
24
window.attachEvent(
"onload"
, jQuery.ready );
25
// If IE and not a frame
26
// continually check to see if the document is ready
27
var
toplevel =
false
;
28
try
{
29
toplevel = window.frameElement ==
null
;
30
}
catch
(e) {}
31
if
( document.documentElement.doScroll && toplevel ) {
32
doScrollCheck();
33
}
34
}
35
}
-WebkitをFirefoxと に い、DOMContentLoadedイベントを しているが、Webkitは525 のバージョンで されたため、 の がある.IEについては、まずdocumentのonreadystatechangeイベントを し、windowとテストした.onloadはかなり、すべてのリソースのダウンロードが するまでトリガーされます.その 、IEであり、ページがiframeにない 、documentElementのdoScrollメソッドをsettiemoutにより び し け、 び しが するまでDOMContentLoadedをトリガすると する.1 jQueryのIEに する の は、IEの で、DOMのいくつかの はDOMの が した にしか び すことができなくて、doScrollはこのような で、 にdoScrollを び すことができる つまりDOMの が する 、prototypeの のdocumentと.writeに べて,このスキームはページにiframeがある に する を できる.また,jQueryはページがiframeにある にはこの が になることを しているようで, コードではiframeであればdocumentのonreadystatechangeで し,そうでなければdoScrollで すると している.しかし、iframeでもdoScrollは であることが された.
4.IE の を する
くのフロントエンドはいつも のIEに を っています. かに、 の を するのはますます ち いですが、 がありません. えられない 、 しんでください.01
<!--[if IE]>
02
<h1> IE </h1>
03
<![endif]-->
04
<!--[if IE 5]>
05
<h1> 5</h1>
06
<![endif]-->
07
<!--[if IE 5.0]>
08
<h1> 5.0</h1>
09
<![endif]-->
10
<!--[if IE 5.5]>
11
<h1> 5.5</h1>
12
<![endif]-->
13
<!--[if IE 6]>
14
<h1> 6</h1>
15
<![endif]-->
16
<!--[if IE 7]>
17
<h1> 7</h1>
18
<![endif]-->
ここまでまとめておきましょう. や な に に つことを っています.
:http://www.nowamagic.net/javascript/js_DomInJavascript.php