JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件_javascript技巧
跨平台的事件EventUtil对象
EventUtil:
var EventUtil={
addEventHandler:function(oTarget, sEventType, fnHandler){
if(oTarget.addEventListener){
oTarget.addEventListener(sEventType,fnHandler,false);
} else if(oTarget.attachEvent){
oTarget.attachEvent("on"+sEventType,fnHandler);
} else{
oTarget["on"+sEventType]=fnHandler;
}
},
removeEventHandler:function(oTarget, sEventType, fnHandler){
if(oTarget.removeEventListener){
oTarget.removeEventListener(sEventType,fnHandler);
} else if(oTarget.detachEvent){
oTarget.detachEvent("on"+sEventType,fnHandler);
} else{
oTarget["on"+sEventType]=null;
}
},
formatEvent:function(oEvent){
var isIE=/msie/i.test(navigator.userAgent),
isWin=/win/i.test(navigator.userAgent);
if(isIE && isWin){
oEvent.charCode=(oEvent.type == "keypress")?oEvent.keyCode:0;
oEvent.eventPhase =2;
oEvent.isChar=(oEvent.charCode>0);
oEvent.pageX=oEvent.clientX+document.body.scrollLeft;
oEvent.pageY=oEvent.clientY+document.body.scrollTop;
oEvent.preventDefault=function(){
this.returnvalue=false;
}
if(oEvent.type == "mouseout"){
oEvent.relateTarget=oEvent.toElement;
}else if(oEvent.type=="mouseover"){
oEvent.relatedTarget=oEvent.fromElement;
}
oEvent.stopPropagation=function(){
this.cancelBubble=true;
}
oEvent.target=oEvent.srcElement;
oEvent.time=(new Date()).getTime();
}
return oEvent;
},
getEvent:function(){
if(window.event){
return this.formatEvent(window.event);
}else{
return EventUtil.getEvent.caller.arguments[0];
}
}
}
测试
<script> <BR>var EventUtil={ <BR>addEventHandler:function(oTarget, sEventType, fnHandler){ <BR>if(oTarget.addEventListener){ <BR>oTarget.addEventListener(sEventType,fnHandler,false); <BR>} else if(oTarget.attachEvent){ <BR>oTarget.attachEvent("on"+sEventType,fnHandler); <BR>} else{ <BR>oTarget["on"+sEventType]=fnHandler; <BR>} <BR>}, <BR>removeEventHandler:function(oTarget, sEventType, fnHandler){ <BR>if(oTarget.removeEventListener){ <BR>oTarget.removeEventListener(sEventType,fnHandler); <BR>} else if(oTarget.detachEvent){ <BR>oTarget.detachEvent("on"+sEventType,fnHandler); <BR>} else{ <BR>oTarget["on"+sEventType]=null; <BR>} <BR>}, <BR>formatEvent:function(oEvent){ <BR>var isIE=/msie/i.test(navigator.userAgent), <BR>isWin=/win/i.test(navigator.userAgent); <BR>if(isIE && isWin){ <BR>oEvent.charCode=(oEvent.type == "keypress")?oEvent.keyCode:0; <BR>oEvent.eventPhase =2; <BR>oEvent.isChar=(oEvent.charCode>0); <BR>oEvent.pageX=oEvent.clientX+document.body.scrollLeft; <BR>oEvent.pageY=oEvent.clientY+document.body.scrollTop; <BR>oEvent.preventDefault=function(){ <BR>this.returnvalue=false; <BR>} <BR>if(oEvent.type == "mouseout"){ <BR>oEvent.relateTarget=oEvent.toElement; <BR>}else if(oEvent.type=="mouseover"){ <BR>oEvent.relatedTarget=oEvent.fromElement; <BR>} <BR>oEvent.stopPropagation=function(){ <BR>this.cancelBubble=true; <BR>} <BR>oEvent.target=oEvent.srcElement; <BR>oEvent.time=(new Date()).getTime(); <BR>} <BR>return oEvent; <BR>}, <BR>getEvent:function(){ <BR>if(window.event){ <BR>return this.formatEvent(window.event); <BR>}else{ <BR>return EventUtil.getEvent.caller.arguments[0]; <BR>} <BR>} <BR>} <BR>EventUtil.addEventHandler(window,"load",function(){ <BR>var oDiv=document.getElementById("div1"); <BR>EventUtil.addEventHandler(oDiv,"mouseover",handleEvent); <BR>EventUtil.addEventHandler(oDiv,"mouseout",handleEvent); <BR>EventUtil.addEventHandler(oDiv,"mousedown",handleEvent); <BR>EventUtil.addEventHandler(oDiv,"mouseup",handleEvent); <BR>EventUtil.addEventHandler(oDiv,"click",handleEvent); <BR>EventUtil.addEventHandler(oDiv,"dblclick",handleEvent); <BR>}); <BR>function handleEvent(){ <BR>var oEvent=EventUtil.getEvent(); <BR>var oTextbox=document.getElementById("txt1"); <BR>oTextbox.value+="\n>"+oEvent.type; <BR>oTextbox.value+="\n target is "+oEvent.target.tagName; <BR>if(oEvent.relatedTarget){ <BR>oTextbox.value+="\n relateTarget is "+oEvent.relatedTarget.tagName; <BR>} <BR>} <BR></script>
Use your mouse to click and double click the red square.
// 0);
oEvent.pageX=oEvent.clientX+document.body.scrollLeft;
oEvent.pageY=oEvent.clientY+document.body.scrollTop;
oEvent.preventDefault=function(){
this.returnvalue=false;
}
if(oEvent.type == "mouseout"){
oEvent.relateTarget=oEvent.toElement;
}else if(oEvent.type=="mouseover"){
oEvent.relatedTarget=oEvent.fromElement;
}
oEvent.stopPropagation=function(){
this.cancelBubble=true;
}
oEvent.target=oEvent.srcElement;
oEvent.time=(new Date()).getTime();
}
return oEvent;
},
getEvent:function(){
if(window.event){
return this.formatEvent(window.event);
}else{
return EventUtil.getEvent.caller.arguments[0];
}
}
}
window.onload=function(){
var oDiv=document.getElementById("div1");
EventUtil.addEventHandler(oDiv,"mouseover",handleEvent);
EventUtil.addEventHandler(oDiv,"mouseout",handleEvent);
EventUtil.addEventHandler(oDiv,"mousedown",handleEvent);
EventUtil.addEventHandler(oDiv,"mouseup",handleEvent);
EventUtil.addEventHandler(oDiv,"click",handleEvent);
EventUtil.addEventHandler(oDiv,"dblclick",handleEvent);
}
function handleEvent(){
var oEvent=EventUtil.getEvent();
var oTextbox=document.getElementById("txt1");
oTextbox.innerHTML+="
>"+oEvent.type;
oTextbox.innerHTML+="
target is "+oEvent.target.tagName;
if(oEvent.relatedTarget){
oTextbox.innerHTML+="
relateTarget is "+oEvent.relatedTarget.tagName;
}
}
// ]]>
Use your mouse to click and double click the red square.
Test
作者:Artwl
出处:http://artwl.cnblogs.com

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Bagaimana untuk melakukan pengesahan data pada kod C++? Pengesahan data adalah bahagian yang sangat penting semasa menulis kod C++. Dengan mengesahkan data yang dimasukkan oleh pengguna, keteguhan dan keselamatan program boleh dipertingkatkan. Artikel ini akan memperkenalkan beberapa kaedah dan teknik pengesahan data biasa untuk membantu pembaca mengesahkan data dalam kod C++ dengan berkesan. Semakan jenis data input Sebelum memproses input data oleh pengguna, semak dahulu sama ada jenis data input memenuhi keperluan. Sebagai contoh, jika anda perlu menerima input integer daripada pengguna, anda perlu memastikan bahawa input pengguna adalah

Sebagai bahasa pengaturcaraan yang pantas dan cekap, bahasa Go telah digunakan secara meluas dalam pembangunan bahagian belakang. Walau bagaimanapun, dengan pembangunan berterusan bahasa Go, semakin ramai pembangun mula mencuba menggunakan bahasa Go untuk pembangunan antara muka GUI dalam medan bahagian hadapan. Artikel ini akan memperkenalkan pembaca tentang cara menggunakan bahasa Go untuk reka bentuk antara muka GUI merentas platform dan menyediakan contoh kod khusus untuk membantu pembaca memulakan dan menerapkannya dengan lebih baik. 1. Pengenalan kepada GUI pembangunan GUI bahasa Go (GraphicalUserInterface, untuk grafik)

Go ialah bahasa pengaturcaraan sumber terbuka, merentas platform yang terkenal dengan kesederhanaan, kelajuan dan keselarasannya. Ia digunakan dalam pelbagai aplikasi daripada skrip ringkas kepada sistem teragih yang besar. Kelebihan utamanya termasuk platform silang, sumber terbuka, kesederhanaan, kelajuan dan konkurensi. Contohnya, Go memudahkan untuk membina pelayan HTTP mudah atau perangkak serentak.

Fungsi C++ memainkan peranan penting dalam pembangunan GUI merentas platform, menyediakan API merentas platform untuk mencipta dan mengurus GUI. API ini termasuk SFML, Qt dan GLFW, yang menyediakan fungsi biasa untuk mengendalikan tetingkap, kawalan dan acara. Fungsi ini membolehkan pembangun membina pengalaman GUI yang konsisten merentas sistem pengendalian yang berbeza, memudahkan pembangunan berbilang platform dan mendayakan aplikasi yang berjalan dengan lancar pada pelbagai platform.

Jawapan: Dalam pembangunan merentas platform, rangka kerja PHP meningkatkan kecekapan dengan menjadikan kod boleh diguna semula, meningkatkan produktiviti dan memendekkan masa pembangunan. Butiran: Kod boleh diguna semula: Menyediakan komponen dan kelas pra-bina untuk mengurangkan penulisan kod berulang. Tingkatkan produktiviti: Automatikkan tugas yang membosankan seperti interaksi pangkalan data, membolehkan pembangun menumpukan pada fungsi teras. Masa pembangunan yang lebih pantas: Komponen pra-bina dan ciri automatik mempercepatkan pembangunan tanpa perlu kod dari awal.

Trend pembangunan merentas platform PHP: aplikasi web progresif, reka bentuk responsif, integrasi pengkomputeran awan. Tinjauan teknologi: pembangunan berterusan rangka kerja PHP, integrasi kecerdasan buatan dan sokongan IoT. Kes praktikal: Laravel membina aplikasi web progresif merentas platform.

Penyepaduan bahasa Vue.js dan Dart, idea untuk membina aplikasi mudah alih merentas platform Dalam bidang pembangunan aplikasi mudah alih, rangka kerja pembangunan merentas platform telah mendapat lebih banyak perhatian. Vue.js ialah rangka kerja JavaScript untuk membina antara muka pengguna, manakala Dart ialah bahasa yang dibangunkan oleh Google untuk membina aplikasi merentas platform. Artikel ini akan meneroka cara mengintegrasikan Vue.js dengan bahasa Dart untuk membina aplikasi mudah alih merentas platform. 1. Pengenalan kepada Vue.js Vue.js dianggap ringan

Dalam era Internet hari ini, pembangunan teknologi hadapan dan belakang adalah penting untuk kejayaan laman web dan aplikasi. Dengan kemajuan dan pembangunan teknologi yang berterusan, teknologi hadapan dan belakang juga sentiasa berkembang dan bertambah baik untuk menyesuaikan diri dengan perubahan keperluan pasaran dan pengalaman pengguna. Artikel ini akan membandingkan dan menganalisis arah aliran pembangunan teknologi bahagian hadapan dan bahagian belakang dari perspektif susunan teknologi. 1. Trend Pembangunan Tindanan Teknologi Bahagian Hadapan Susun teknologi bahagian hadapan merujuk kepada gabungan siri teknologi dan alatan yang digunakan untuk membina antara muka pengguna untuk tapak web dan aplikasi. Dengan populariti Internet mudah alih dan pengkomputeran awan
