JavaScript和Dom的關系好比C#和.NETFramework的關系。
内容:使用JavaScript操作Dom進行DHTML開發。
Alert都不是JavaScript中定義的東西,它是Dom方法;好比WinForm中的MessageBox
Dom 就是HTML頁面的模型,将每個标簽都作為一個對象。 Dom也想WinForm一樣,通過事件、屬性、方法進行程式設計
CSS+JavaScript+Dom=DHTML
事件:
<head>
<title>無标題頁</title>
<script type="text/jscript">
functionbodymousedown(){
alert('别點我!');
alert('哈哈');
}
functionf1(){
alert("我是f1");
}
functionf2(){
alert("我是f2");
}
</script>
</head>
<body>
<input type="button" onclick="document.οndblclick=f1" value="關聯事件1" />
<input type="button" onclick="document.οndblclick=f2" value="關聯事件2" />
</body>
window對象 代表目前浏覽器視窗,使用window對象的屬性、方法的時候可以省略window,比如window.alert(‘a’)可以省略成alert.(‘a’)
(1) alert方法,彈出消息對話框
(2) confirm方法,顯示确定、取消對話框
(3) 重新導航到指定的位址:navigate(“http://www.rupeng.com”);
(4) setInterval每隔一段時間執行指定的代碼,第一個參數為代碼的字元串,第二個參數為間隔時間(機關毫秒),傳回值為定時器的辨別
setInterval(“alert(‘hello’)”,5000);
(5) clearInterval取消setInterval的定時執行,相當于Timer中的Enabled=False。因為setInterval可以設定多個定時,是以clearInterval要指定清除那個定時的辨別,即setInterval的傳回值。
var intervalld =setInterval(“alert(‘hello’)”,5000);
clearInterval(intervalld);
(6) setTimeout也是定時執行,但是不像setInterval那樣是重複的定時執行,隻執行一次,clearTimeout也是清除定時。(翻譯:Interval 間隔;Timeout 逾時)
var timeoutId = setTimeout(“alert(‘hello’)”,2000);
body、document對象的事件
(1) onload:網頁加載完畢時觸發。浏覽器是一邊下載下傳文檔、一遍解析執行,可能會出現JavaScript執行時需要操作某個元素,這個元素還沒有加載,如果這樣就要把操作的代碼放到onload事件中,或者可以把JavaScript放到元素之後。元素也有onload,表示該元素加載完成
(2) onunload:網頁關閉(或離開)後觸發。
(3) onbeforeunload:在網頁準備關閉(或離開)時觸發
在事件中為”window.event.returnValue”指派(要顯示的警告消息),這樣離開視窗(比如前進、後退、關閉)就會彈出确認消息
<body οnbefοreunlοad=”window.event.returnValue=’真的要放棄發帖退出嗎?’”>
window對象的屬性
l window.location.href=”http://www.itcast.cn”。重新導向新的位址,和navigate方法效果一樣。window.location.reload()重新整理頁面
l window.event 是非常重要的屬性,用來獲得發生事件時的資訊,事件不局限于window對象的事件,所有元素的事件都可以通過event屬性取到相關資訊。類似于WinForm中的e(EventArg)
altKey屬性,bool類型,表示發生事件時alt鍵是否被按下,類似的還有ctrlKey、shiftKey屬性,例:
<input type="button" value="點選" onclick="if(window.event.ctrlKey){alert('按下了ctrl')};else{alert('普通點選')};" />
clientX、clientY發生事件時滑鼠在客戶區的坐标;screenX、screenY發生事件時滑鼠在螢幕上的坐标;offsetX、offsetY發生事件時滑鼠相對于事件源的坐标。
returnValue屬性,如果将returnValue設定為false,就會取消預設事件的處理。在超連結的onclick裡面禁止通路href的頁面,在表單校驗的時候禁止送出表單到伺服器。
srcElement,獲得事件源對象
keyCode,發生事件時的按鍵值
button,發生事件時滑鼠按鍵,1為左鍵,2為右鍵,3為左右鍵同時按
l clipboardData對象,對剪貼闆的操作。clearData(“Text”)清空剪貼闆;getData(“Text”)讀取剪貼闆的值,傳回值為剪貼闆中的内容;setData(“Text”,val),設定剪貼闆中的值。
當複制的時候body的oncopy方法被觸發,直接return false就是禁止複制。
<body οncοpy=”alert(‘禁止複制!’);returnfalse;”>
很多元素也有oncopy、onpaste事件
在網站中複制文章的時候,為了防止那些拷貝黨不添加文章來源,自動在複制的内容後添加版權申明。
function modifyClipboard(){
clipboardData.setData(‘Text’,clipboardData.getData(‘Text’)+’本文來自傳智播客技術專區,轉載請注明來源。’+location.herf);
}
οncοpy=”setTimeout(‘modifyClipboard()’,100)”
使用者複制動作發生0.1秒後再去改粘貼闆中的内容。
不能直接在oncopy中執行對粘貼闆的操作,是以設定定時器,0.1秒後執行,這樣就不在oncopy的執行調用棧上了。
l history操作曆史記錄
window.history.back() 後退;window.history.forward()前進
也可以用window.history.go(-1) window.history.go(1)
l document
document的方法:
(1) write:向文檔中寫入内容。writeln,和write差不多,隻不過最後添加一個回車。
<input type=”button” value=”點選” οnclick=”document.write(‘<fontcolor=red>你好</font>’)”/>
在onclick等事件中寫的代碼會沖掉頁面中的内容,隻有在頁面加載過程中write才會與原有内容融合在一起
(2)getElementsById:(常用),根據元素的Id擷取對象,網頁中Id不能重複。也可以通過元素的Id來引用元素,但是有有效範圍之類的問題,是以不建議直接通過Id操作元素,而是通過getElementsById