前端进阶-Event
生活随笔
收集整理的這篇文章主要介紹了
前端进阶-Event
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.取得事件對象及取得事件目標對象
document.onclick =function (evt) {evt = evt || window.event;//在IE中evt會是undefined//而支持W3C DOM事件的瀏覽器中事件對象將會作為事件處理函數的第一個參數var targetElement = evt.target || evt.srcElement;//IE中事件對象沒有target屬性};2.添加事件
function addEvent(obj,evtype,fn,useCapture) {if (obj.addEventListener) {obj.addEventListener(evtype,fn,useCapture);} else {obj.attachEvent("on"+evtype,fn);//IE不支持事件捕獲} else {obj["on"+evtype]=fn;//事實上這種情況不會存在 }}function delEvent(obj,evtype,fn,useCapture) {if (obj.removeEventListener) {obj.removeEventListener(evtype,fn,useCapture);} else {obj.detachEvent("on"+evtype,fn);} else {obj["on"+evtype]=null;}}?
3.Load事件
//使用JavaScript操縱DOM,必須等待DOM加載完畢才可以執行代碼,但window.onload有個壞處,它非要等到頁面中的所有圖片及視頻 加載完畢才會觸發load事件。//結果就是一些本來應該在打開時隱藏起來的元素,由于網絡延遲,在頁面打開時仍然會出現,然后又會突然消失,讓用戶覺得莫名 其妙。必須與這種丑陋的閃爍告別!
function addLoadEvent(fn) {var init = function() {if (arguments.callee.done) return;arguments.callee.done = true;fn.apply(document,arguments);};//注冊DOMContentLoaded事件,如果支持的話if (document.addEventListener) {document.addEventListener("DOMContentLoaded", init, false);}//但對于Safari,我們需要使用setInterval方法不斷檢測document.readyState//當為loaded或complete的時候表明DOM已經加載完畢if (/WebKit/i.test(navigator.userAgent)) {var _timer = setInterval(function() {if (/loaded|complete/.test(document.readyState)) {clearInterval(_timer);init();}},10);}//對于IE則使用條件注釋,并使用script標簽的defer屬性//IE中可以給script標簽添加一個defer(延遲)屬性,這樣,標簽中的腳本只有當DOM加載完畢后才執行/*@cc_on @*//*@if (@_win32)document.write("<script id=\"__ie_onload\" defer=\"defer\" src=\"javascript:void(0)\"><\/script>");var script = document.getElementById("__ie_onload");script.onreadystatechange = function() {if (this.readyState == "complete") {init();}};/*@end @*/return true;}
轉載于:https://www.cnblogs.com/BigIdiot/archive/2012/09/20/2695404.html
總結
以上是生活随笔為你收集整理的前端进阶-Event的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux安全设置
- 下一篇: 关于easyui的layout的regi