Skip to content

Commit

Permalink
hifive#298 h5trackstartイベントのバインド対象要素が複数ある場合に正しく動いていなかったので修正。
Browse files Browse the repository at this point in the history
また、touchActionをサポートしているかどうかとサポートしているときのtouchActionのプロパティを、バインド毎ではなく最初に一回だけ判定するようにしました。
また、グローバルセレクタを指定された時、touchActionを指定する要素を同一documentから探すように修正しました。
  • Loading branch information
fukudayasuo committed May 9, 2014
1 parent 6cf51aa commit d44d953
Showing 1 changed file with 25 additions and 10 deletions.
35 changes: 25 additions & 10 deletions hifive/src/main/webapp/src/h5.core.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,23 @@
*/
var h5trackTriggeredFlags = [];

/**
* touch-action(または-ms-touch-action)プロパティがサポートされているか
*/
var isSupportTouchAction = false;
/**
* touch-actionをサポートしているときの、そのプロパティ(touchActionまたはmsTouchAction)
*/
var touchActionProp = '';
var div = document.createElement('div');
if (typeof div.style.touchAction !== TYPE_OF_UNDEFINED) {
isSupportTouchAction = true;
touchActionProp = 'touchAction';
} else if (typeof div.style.msTouchAction !== TYPE_OF_UNDEFINED) {
isSupportTouchAction = true;
touchActionProp = 'msTouchAction';
}

// =============================
// Functions
// =============================
Expand Down Expand Up @@ -645,18 +662,16 @@
}

// h5trackstartのバインド先のstyle.touchActionにh5.settings.trackstartTouchActionの値(デフォルト'none')を設定する
// touchActionをサポートしていないなら何もしない
// h5.settings.trackstartTouchActionがnullなら何もしない
// TODO プラッガブル(どのイベントの時にどういう処理をするか)が設定できるようにする
if (event === EVENT_NAME_H5_TRACKSTART && h5.settings.trackstartTouchAction != null) {
var trackTarget = isGlobal ? $(bindObj.evSelector)[0] : $(bindObj.evSelector,
rootElement)[0];
if (trackTarget) {
if (typeof trackTarget.style.touchAction !== TYPE_OF_UNDEFINED) {
trackTarget.style.touchAction = h5.settings.trackstartTouchAction;
} else if (typeof trackTarget.style.msTouchAction !== TYPE_OF_UNDEFINED) {
trackTarget.style.msTouchAction = h5.settings.trackstartTouchAction;
}
}
if (isSupportTouchAction && event === EVENT_NAME_H5_TRACKSTART
&& h5.settings.trackstartTouchAction != null) {
var $trackTarget = isGlobal ? $(bindObj.evSelector, doc) : $(bindObj.evSelector,
rootElement);
$trackTarget.each(function() {
this.style[touchActionProp] = h5.settings.trackstartTouchAction;
});
}
}

Expand Down

0 comments on commit d44d953

Please sign in to comment.