/** * @private * @extends Object * DOMイベント。このクラスは、{@link Ext.event.Event}を実際に継承しますが、ドキュメントの用途上、{@link Ext.event.Event}内にメンバーがリスト化されています。 */ Ext.define('Ext.event.Dom', { extend: 'Ext.event.Event', constructor: function(event) { var target = event.target, touches; if (target && target.nodeType !== 1) { target = target.parentNode; } touches = event.changedTouches; if (touches) { touches = touches[0]; this.pageX = touches.pageX; this.pageY = touches.pageY; } else { this.pageX = event.pageX; this.pageY = event.pageY; } this.browserEvent = this.event = event; this.target = this.delegatedTarget = target; this.type = event.type; this.timeStamp = this.time = +event.timeStamp; return this; }, /** * @property {Number} distance * イベントの間隔。 * * **これはイベントのタイプが`swipe`と`pinch`の場合にのみ使用可能です。** */ /** * @property {HTMLElement} target * このイベントのターゲットのHTML要素。例えば、tapイベントをリッスンしているときに`<div>`要素をタップした場合、これは`<div>`要素を返します。 */ /** * @property {Number} pageX イベントのブラウザのx座標。 */ /** * @property {Number} pageY イベントのブラウザのy座標。 */ stopEvent: function() { this.preventDefault(); return this.callParent(); }, /** * ブラウザのデフォルトのイベントハンドリングを防ぎます。 */ preventDefault: function() { this.browserEvent.preventDefault(); }, /** * イベントのx座標を取得します。 * @deprecated 2.0 {@link #pageX}プロパティを直接使用してください。 * @return {Number} */ getPageX: function() { return this.pageX || this.browserEvent.pageX; }, /** * イベントのy座標を取得します。 * @deprecated 2.0 {@link #pageX}プロパティを直接使用してください。 * @return {Number} */ getPageY: function() { return this.pageY || this.browserEvent.pageY; }, /** * イベントのXとY座標を取得します。 * @deprecated 2.0 {@link #pageX}プロパティおよび{@link #pageY}プロパティを直接使用してください。 * @return {Array} */ getXY: function() { if (!this.xy) { this.xy = [this.getPageX(), this.getPageY()]; } return this.xy; }, /** * イベントのターゲットを取得します。{@link #target}とは違い、これはイベントの主要な要素を返します。このため、Ext.Viewport.element上のタップイベントをリッスンしているときに、Ext.Viewport.elementの内部要素をタップすると、これはExt.Viewport.elementを返します。 * * タップしたい要素がある場合には、{@link #target}を使用してください。 * * @param {String} selector (optional) ターゲットをフィルタリングする、またはターゲットの祖先を検索するためのシンプルなセレクタ。 * @param {Number/Mixed} [maxDepth=10||document.body] (optional) 検索される最大の深さを数値または要素で指定(デフォルトは10またはdocument.body)。 * @param {Boolean} returnEl (optional) `true`に設定すると、DOMノードの代わりにExt.Elementオブジェクトを返します。 * @return {HTMLElement} */ getTarget: function(selector, maxDepth, returnEl) { if (arguments.length === 0) { return this.delegatedTarget; } return selector ? Ext.fly(this.target).findParent(selector, maxDepth, returnEl) : (returnEl ? Ext.get(this.target) : this.target); }, /** * イベントの時刻を返します。 * @return {Date} */ getTime: function() { return this.time; }, setDelegatedTarget: function(target) { this.delegatedTarget = target; }, makeUnpreventable: function() { this.browserEvent.preventDefault = Ext.emptyFn; } });