ホームページ ウェブフロントエンド jsチュートリアル JavaScript 高度なプログラミング読書メモ (18) js クロスプラットフォーム イベント_javascript スキル

JavaScript 高度なプログラミング読書メモ (18) js クロスプラットフォーム イベント_javascript スキル

May 16, 2016 pm 05:50 PM
クロスプラットフォーム

跨平台のEventEventUtil对象
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.popularTarget=oEvent.fromElement;
}
oEvent.stopPropagation=function(){
this.cancelBubble=true;
}
oEvent.target=oEvent.srcElement;
oEvent.time=(new Date()).getTime();
}
oEvent を返す;
},
getEvent:function(){
if(window.event){
return this.formatEvent(window.event);
}else{
return EventUtil.getEvent.caller.arguments[0];
}
}
}

测试
复制代码代码如下:




デモ


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.popularTarget=oEvent.fromElement;
}
oEvent.stopPropagation=function(){
this.cancelBubble=true;
}
oEvent.target=oEvent.srcElement;
oEvent.time=(new Date()).getTime();
}
oEvent を返す;
},
getEvent:function(){
if(window.event){
return this.formatEvent(window.event);
}else{
return EventUtil.getEvent.caller.arguments[0];
}
}
}
EventUtil.addEventHandler(window,"load",function(){
var oDiv=document.getElementById("div1");
EventUtil.addEventHandler (oDiv,"mouseover",handleEvent);
EventUtil.addEventHandler(oDiv,"mouseout",handleEvent);
EventUtil.addEventHandler(oDiv,"mousedown",handleEvent); ,"mouseup",handleEvent);
EventUtil.addEventHandler(oDiv,"click",handleEvent);
EventUtil.addEventHandler(oDiv,"dblclick",handleEvent);
function handleEvent(){
var oEvent=EventUtil.getEvent();
var oTextbox=document.getElementById("txt1");
oTextbox.value ="n>" oイベント.タイプ;
oTextbox.value ="n ターゲットは " oEvent.target.tagName;
if(oEvent.popularTarget){
oTextbox.value ="n 関連ターゲットは " oEvent.popularTarget.tagName;
}
}



マウスを使用して赤い四角をクリックし、ダブルクリックします。


テスト




// 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.popularTarget=oEvent.fromElement;
}
oEvent.stopPropagation=function(){
this.cancelBubble=true;
}
oEvent.target=oEvent.srcElement;
oEvent.time=(new Date()).getTime();
}
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 ="
>" oイベント.タイプ;
oTextbox.innerHTML ="
ターゲットは " oEvent.target.tagName;
if(oEvent.popularTarget){
oTextbox.innerHTML ="
relateTarget は " oEvent.popularTarget.tagName;
}
}
// ]]>
マウスを使用して赤い四角をクリックし、ダブルクリックします。
テスト


作者:Artwl
出处:http://artwl.cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C++ コードでデータ検証を実行するにはどうすればよいですか? C++ コードでデータ検証を実行するにはどうすればよいですか? Nov 04, 2023 pm 01:37 PM

C++ コードでデータ検証を実行するにはどうすればよいですか? データ検証は、C++ コードを作成するときに非常に重要な部分です。ユーザーが入力したデータを検証することで、プログラムの堅牢性とセキュリティを強化できます。この記事では、読者が C++ コード内のデータを効果的に検証できるように、いくつかの一般的なデータ検証方法とテクニックを紹介します。入力データ型チェック ユーザーが入力したデータを処理する前に、入力データの型が要件を満たしているかどうかをチェックします。たとえば、ユーザーから整数入力を受け取る必要がある場合、ユーザー入力が次のとおりであることを確認する必要があります。

Go 言語 GUI 開発ガイド: クロスプラットフォーム インターフェイス設計の実装 Go 言語 GUI 開発ガイド: クロスプラットフォーム インターフェイス設計の実装 Mar 22, 2024 pm 02:00 PM

Go 言語は、高速で効率的なプログラミング言語として、バックエンド開発で広く使用されています。しかし、Go 言語の継続的な開発に伴い、フロントエンド分野での GUI インターフェイス開発に Go 言語を使用しようとする開発者が増えています。この記事では、クロスプラットフォーム GUI インターフェイス設計に Go 言語を使用する方法を読者に紹介し、読者が Go 言語を使い始めてより適切に適用できるようにする具体的なコード例を示します。 1. Go 言語 GUI 開発 GUI (GraphicalUserInterface、グラフィックス用) の概要

PHP フレームワークはクロスプラットフォーム開発における開発効率をどのように向上させますか? PHP フレームワークはクロスプラットフォーム開発における開発効率をどのように向上させますか? Jun 02, 2024 pm 09:49 PM

回答: クロスプラットフォーム開発では、PHP フレームワークによりコードが再利用可能になり、生産性が向上し、開発時間が短縮されるため、効率が向上します。詳細: コードの再利用可能: 事前に構築されたコンポーネントとクラスを提供して、繰り返しのコード記述を削減します。生産性の向上: データベースの対話などの退屈なタスクを自動化し、開発者がコア機能に集中できるようにします。開発時間の短縮: 事前に構築されたコンポーネントと自動化された機能により、最初からコードを作成する必要がなく、開発が迅速化されます。

Go スクリプト言語: クロスプラットフォームとオープンソースの魅力 Go スクリプト言語: クロスプラットフォームとオープンソースの魅力 Apr 07, 2024 pm 01:09 PM

Go は、そのシンプルさ、速度、同時実行性で知られるオープンソースのクロスプラットフォーム プログラミング言語です。単純なスクリプトから大規模な分散システムに至るまで、幅広いアプリケーションで使用されています。その主な利点には、クロスプラットフォーム、オープンソース、シンプルさ、速度、同時実行性が含まれます。たとえば、Go を使用すると、単純な HTTP サーバーや並行クローラーを簡単に構築できます。

C++ 関数はどのようにしてクロスプラットフォーム GUI 開発を促進しますか? C++ 関数はどのようにしてクロスプラットフォーム GUI 開発を促進しますか? Apr 26, 2024 pm 12:18 PM

C++ 関数は、クロスプラットフォーム GUI 開発において重要な役割を果たし、GUI を作成および管理するためのクロスプラットフォーム API を提供します。これらの API には、ウィンドウ、コントロール、イベントを操作するための共通機能を提供する SFML、Qt、および GLFW が含まれます。これらの機能により、開発者はさまざまなオペレーティング システム間で一貫した GUI エクスペリエンスを構築できるため、マルチプラットフォーム開発が簡素化され、さまざまなプラットフォーム上でアプリケーションをシームレスに実行できるようになります。

PHP クロスプラットフォーム開発の今後の動向と技術展望 PHP クロスプラットフォーム開発の今後の動向と技術展望 Jun 02, 2024 pm 05:29 PM

PHP クロスプラットフォーム開発トレンド: プログレッシブ Web アプリケーション、レスポンシブ デザイン、クラウド コンピューティング統合。テクノロジーの展望: PHP フレームワーク、人工知能の統合、IoT サポートの継続的な開発。実際のケース: Laravel はクロスプラットフォームのプログレッシブ Web アプリケーションを構築します。

フロントエンドとバックエンドの技術スタックと開発傾向の比較 フロントエンドとバックエンドの技術スタックと開発傾向の比較 Mar 25, 2024 pm 03:30 PM

今日のインターネット時代では、フロントエンドとバックエンドのテクノロジーの開発が Web サイトとアプリケーションの成功に不可欠です。テクノロジーの継続的な進歩と開発に伴い、変化する市場のニーズとユーザー エクスペリエンスに適応するために、フロントエンドとバックエンドのテクノロジーも常に進化し、改善されています。この記事では、フロントエンドとバックエンドの技術開発動向を技術スタックの観点から比較分析していきます。 1. フロントエンド技術スタックの開発動向 フロントエンド技術スタックとは、Web サイトやアプリケーションのユーザー インターフェイスを構築するために使用される一連の技術とツールの組み合わせを指します。モバイルインターネットとクラウドコンピューティングの普及により、

Vue.js と Dart 言語の統合、クロスプラットフォームのモバイル アプリケーションを構築するためのアイデア Vue.js と Dart 言語の統合、クロスプラットフォームのモバイル アプリケーションを構築するためのアイデア Jul 30, 2023 pm 10:33 PM

Vue.js と Dart 言語の統合、クロスプラットフォーム モバイル アプリケーション構築のアイデア モバイル アプリケーション開発の分野では、クロスプラットフォーム開発フレームワークがますます注目を集めています。 Vue.js はユーザー インターフェイスを構築するための JavaScript フレームワークであり、Dart はクロスプラットフォーム アプリケーションを構築するために Google によって開発された言語です。この記事では、Vue.js を Dart 言語と統合してクロスプラットフォームのモバイル アプリケーションを構築する方法について説明します。 1. Vue.js の概要 Vue.js は軽量であると考えられています。

See all articles