console.log( '>>Khtml : ' + acme.Khtml );\r
\r
} else\r
+ if( ( i = dua.indexOf( 'Android ' ) ) !== -1 ){\r
+ acme.AndroidBrowser = parseFloat( dua.substr( i + 8 ) ) || 0;\r
+ console.log( '>> AndroidBrowser : ' + acme.Android );\r
+ } else\r
if( i = parseFloat(dua.split('WebKit\/')[1]) ){\r
acme.WebKit = i;\r
\r
console.log( '>> Android : ' + acme.Android );\r
} else\r
if( dua.indexOf( 'iPhone;' ) !== -1 || dua.indexOf( 'iPad;' ) !== -1 || dua.indexOf( 'iPod;' ) !== -1 ){\r
- acme.iOS = parseFloat( dua.split( 'OS ' )[ 1 ].split( '_' ).join( '' ) ) || 1;\r
+ \r
+ v = dua.split( 'OS ' )[ 1 ].split( '_' );\r
+ \r
+ acme.iOSMajor = parseFloat( v[ 0 ] ) || 0;\r
+ acme.iOSMinor = parseFloat( v[ 1 ] ) || 0;\r
+ acme.iOSPatch = parseFloat( v[ 2 ] ) || 0;\r
+ \r
+ acme.iOS = acme.iOSMajor + acme.iOSMinor / 10;\r
+ \r
console.log( '>> iOS : ' + acme.iOS );\r
} else\r
if( dua.indexOf( 'hp-tablet' ) !== -1 || dua.indexOf( 'webOS' ) !== -1 ){\r
if( !list ) return ret;\r
\r
// 数値, 文字が渡された場合\r
- if( !type ) e = { type : type = e };\r
+ if( !type ){\r
+ type = e;\r
+ e = { type : type };\r
+ };\r
e.target = e.target || this;\r
\r
if( !( list = list[ type ] ) ) return ret;\r
};\r
if( unlistens && unlistens.indexOf( f ) !== -1 ) continue;\r
\r
+ r = X.Callback.NONE;\r
if( f.k ){\r
f.a = [ e ];\r
r = X.Callback._proxyCallback( f );\r
( this._unlistens[ type ] = [ f ] );\r
} else {\r
delete f.once;\r
- f.kill === X.Callback._kill && f.kill();\r
+ // f.kill === X.Callback._kill && f.kill();\r
_list.splice( i, 1 );\r
if( !_list.length ){\r
delete this._listeners[ type ];\r
- \r
+\r
+\r
+\r
X.Dom = X.Class._override(\r
new X.EventDispatcher(),\r
{\r
* https://w3g.jp/blog/studies/ios7_1_minimal-ui_warning\r
* iOS7.0からあったiPad Safariの高さ100%コンテンツでlandscape(横向き)時に起きる不具合\r
* \r
+ * http://looxu.blogspot.jp/2013/11/ios7mobile-safariwindowinnerheight.html\r
+ * iOS7にて、Mobile Safariのwindow.innerHeightを正しく取得する方法\r
+ * \r
* http://tenderfeel.xsrv.jp/javascript/1182/\r
* アドレスバーの高さの算出\r
* \r
* getBoundingClientRect で fontsize の調査\r
*/\r
_resize :\r
- X.UA.IE < 9 ?\r
+ // iOS もループで回す,,,iOS3.1.3, iOS6 で確認\r
+ X.UA.IE < 9 || X.UA.iOS ?\r
(function(){\r
var size;\r
if( !X.Dom._lock ){\r
_getSize :\r
X.UA.IE ?\r
new Function( 'return[X.Dom._root.clientWidth,X.Dom._root.clientHeight]' ) :\r
+ 4 <= X.UA.iOS ?\r
+ new Function( 'return[window.innerWidth,window.innerHeight]' ) :\r
new Function( 'return[window.innerWidth,window.innerHeight]' ),\r
\r
getSize : function(){\r
\r
getScrollbarSize : function(){\r
return [ X.Dom.BoxModel.vScrollbarSize, X.Dom.BoxModel.hScrollbarSize ]; \r
- } \r
+ },\r
+ \r
+ getBaseFontSize : function(){\r
+ if( Node._body._updateTimerID ){\r
+ Node._body._startUpdate();\r
+ return Node._fontSizeNode._rawNode.offsetHeight;\r
+ };\r
+ return X.Dom.baseFontSize;\r
+ }\r
}\r
);\r
\r
-if( !( X.UA.IE < 9 ) ){\r
+if( !( X.UA.IE < 9 || X.UA.iOS ) ){\r
X.Dom._detectFontSize = function(){\r
var size = Node._fontSizeNode._rawNode.offsetHeight;\r
if( X.Dom.baseFontSize !== size ){\r
X.Dom._orientationchange = function( e ){\r
X.Dom._orientationFlag = true;\r
!X.UA.Android && X.Dom._resize();\r
- console.log( '-- orientationchange : ' + X.getTime() );\r
+ console.log( '-- orientationchange : ' + X.Dom.getSize[ 0 ] + ' ' + X.Dom.getSize[ 1 ] );\r
};\r
};\r
\r
* use X.Callback\r
* \r
* http://d.hatena.ne.jp/uupaa/20100430/1272561922\r
+ * event.offsetX と offsetY の互換性について\r
* \r
*/\r
\r
//this.screenY = e.screenY;\r
this.pageX = e.pageX;\r
this.pageY = e.pageY;\r
- this.offsetX = e.offsetX || e.layerX;\r
- this.offsetY = e.offsetY || e.layerY;\r
+ this.offsetX = e.offsetX || e.layerX || 0; // 要素上の座標を取得 \r
+ this.offsetY = e.offsetY || e.layerY || 0;\r
\r
this.keyCode = e.keyCode;\r
this.altKey = e.altKey;\r
};\r
};\r
\r
-X.Dom.listen( X.Dom.Event.VIEW_RESIZED, function(e){ console.log( 'X.Dom VIEW_RESIZED ' + e.w + 'x' + e.h ); } );\r
+X.Dom.listen( X.Dom.Event.VIEW_RESIZED, function(e){ console.log( 'X.Dom VIEW_RESIZED ' + e.w + ' x ' + e.h ); } );\r
\r
};\r
};\r
\r
+Node.prototype.offset = function( /* xnodeParent */ ){\r
+ var x = 0, y = 0, elm;\r
+ \r
+ if( !this.parent ){\r
+ console.log( 'xnode.offset() : no parent' );\r
+ return { x : 0, y : 0 };\r
+ };\r
+ Node._body._updateTimerID && Node._body._startUpdate();\r
+ if( !this._root ){\r
+ console.log( 'xnode.offset() : not belong tree.' );\r
+ return { x : 0, y : 0 };\r
+ };\r
+ if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
+ \r
+ if( X.Dom.Node._body === this || X.Dom.Node._html === this ){\r
+ return { x : 0, y : 0 };\r
+ };\r
+ \r
+ if( X.Dom.DOM_W3C ){\r
+ elm = this._rawNode;\r
+ } else\r
+ if( X.Dom.DOM_IE4 ){\r
+ elm = this._rawNode || this._ie4getRawNode(); \r
+ } else {\r
+ \r
+ };\r
+ \r
+ while( elm && elm !== document.body ){\r
+ x += elm.offsetLeft;\r
+ y += elm.offsetTop;\r
+ elm = elm.offsetParent || elm.parentNode || elm.parentElement;\r
+ };\r
+ return { x : x, y : y };\r
+};\r