質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

AngularJS

AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

Q&A

0回答

1667閲覧

Angular JS マウスイベントの処理について

yositigu

総合スコア17

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

AngularJS

AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

0グッド

0クリップ

投稿2019/06/12 08:46

下記はマウス操作で座標を出力する処理です。
getCrossBrowserElementCoordsで処理している内容がよくわからず、教えていただけるでしょうか。
①下記はmouseEventが空だったら行われる処理だと思うのですが、そのような状況は起きるのか

if (!mouseEvent) { mouseEvent = window.event; }

②if (mouseEvent.pageX || mouseEvent.pageY)以降の処理が具体的に何をしているのか理解できず、ご教授をお願いいたします。

HTML5

1<!DOCTYPE html> 2<html> 3<head> 4 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.20/angular.min.js"></script> 5 <script src="script.js"></script> 6</head> 7 8<body ng-app="mainModule"> 9 <div ng-controller="mainController"> 10 <h3>4. Mouse down, up, enter, leave, move, over</h3> 11 Move the mouse on the square<br /> 12 <img src="images/square.png" 13 ng-mousedown="onMouseDown($event)" 14 ng-mouseup="onMouseUp($event)" 15 ng-mouseenter="onMouseEnter($event)" 16 ng-mouseleave="onMouseLeave($event)" 17 ng-mousemove="onMouseMove($event)" 18 ng-mouseover="onMouseOver($event)" /><br /> 19 <strong>MOUSE DOWN RESULT:</strong> {{onMouseDownResult}}<br /> 20 <strong>MOUSE UP RESULT:</strong> {{onMouseUpResult}}<br /> 21 <strong>MOUSE ENTER RESULT:</strong> {{onMouseEnterResult}}<br /> 22 <strong>MOUSE LEAVE RESULT:</strong> {{onMouseLeaveResult}}<br /> 23 <strong>MOUSE MOVE RESULT:</strong> {{onMouseMoveResult}}<br /> 24 <strong>MOUSE OVER RESULT:</strong> {{onMouseOverResult}} 25 </div> 26</body> 27</html>

AngularJS

1angular.module("mainModule", []) 2 .controller("mainController", function ($scope) 3 { 4 // Initialization 5 $scope.onFirstBtnClickResult = ""; 6 $scope.secondBtnInput = ""; 7 $scope.onDblClickResult = ""; 8 $scope.onMouseDownResult = ""; 9 $scope.onMouseUpResult = ""; 10 $scope.onMouseEnterResult = ""; 11 $scope.onMouseLeaveResult = ""; 12 $scope.onMouseMoveResult = ""; 13 $scope.onMouseOverResult = ""; 14 15 // Utility functions 16 17 // Accepts a MouseEvent as input and returns the x and y 18 // coordinates relative to the target element. 19 var getCrossBrowserElementCoords = function (mouseEvent) 20 { 21 var result = { 22 x: 0, 23 y: 0 24 }; 25 26 if (!mouseEvent) 27 { 28 mouseEvent = window.event; 29 } 30 31 if (mouseEvent.pageX || mouseEvent.pageY) 32 { 33 result.x = mouseEvent.pageX; 34 result.y = mouseEvent.pageY; 35 } 36 else if (mouseEvent.clientX || mouseEvent.clientY) 37 { 38 result.x = mouseEvent.clientX + document.body.scrollLeft + 39 document.documentElement.scrollLeft; 40 result.y = mouseEvent.clientY + document.body.scrollTop + 41 document.documentElement.scrollTop; 42 } 43 44 if (mouseEvent.target) 45 { 46 var offEl = mouseEvent.target; 47 var offX = 0; 48 var offY = 0; 49 50 if (typeof(offEl.offsetParent) != "undefined") 51 { 52 while (offEl) 53 { 54 offX += offEl.offsetLeft; 55 offY += offEl.offsetTop; 56 57 offEl = offEl.offsetParent; 58 } 59 } 60 else 61 { 62 offX = offEl.x; 63 offY = offEl.y; 64 } 65 66 result.x -= offX; 67 result.y -= offY; 68 } 69 70 return result; 71 }; 72 73 var getMouseEventResult = function (mouseEvent, mouseEventDesc) 74 { 75 var coords = getCrossBrowserElementCoords(mouseEvent); 76 return mouseEventDesc + " at (" + coords.x + ", " + coords.y + ")"; 77 }; 78 79 // Event handlers 80 $scope.onFirstBtnClick = function () { 81 $scope.onFirstBtnClickResult = "CLICKED"; 82 }; 83 84 $scope.onSecondBtnClick = function (value) { 85 $scope.onSecondBtnClickResult = "you typed '" + value + "'"; 86 }; 87 88 $scope.onDblClick = function () { 89 $scope.onDblClickResult = "DOUBLE-CLICKED"; 90 }; 91 92 $scope.onMouseDown = function ($event) { 93 $scope.onMouseDownResult = getMouseEventResult($event, "Mouse down"); 94 }; 95 96 $scope.onMouseUp = function ($event) { 97 $scope.onMouseUpResult = getMouseEventResult($event, "Mouse up"); 98 }; 99 100 $scope.onMouseEnter = function ($event) { 101 $scope.onMouseEnterResult = getMouseEventResult($event, "Mouse enter"); 102 }; 103 104 $scope.onMouseLeave = function ($event) { 105 $scope.onMouseLeaveResult = getMouseEventResult($event, "Mouse leave"); 106 }; 107 108 $scope.onMouseMove = function ($event) { 109 $scope.onMouseMoveResult = getMouseEventResult($event, "Mouse move"); 110 }; 111 112 $scope.onMouseOver = function ($event) { 113 $scope.onMouseOverResult = getMouseEventResult($event, "Mouse over"); 114 }; 115 });

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問