OSDN Git Service

Version 0.6.87, fix SuperConstructor @ X.Class & force convert to PointerEvent @...
[pettanr/clientJs.git] / 0.6.x / js / 01_dom / 10_XDom.js
index 51443ea..9355f21 100644 (file)
@@ -1,4 +1,6 @@
-       \r
+\r
+\r
+\r
 X.Dom = X.Class._override(\r
        new X.EventDispatcher(),\r
        {\r
@@ -19,10 +21,26 @@ X.Dom = X.Class._override(
  *  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
+ * http://sssslide.com/www.slideshare.net/hiroakiwakamatsu/javascript-14514208\r
+ * 1. 傾き時の画面サイズ取得ー 対処方法の例\r
+ * (1)ー• タイマーを使って、画面サイズ取得の タイミングを少しだけ遅延させる\r
+ * window.onorientationchange = function() { setTimeout(function() { alert("W: " + window.innerWidth + ", H: " + window.innerHeight); }, 200); }\r
+ * 横に傾けた時、正常に横向け時の 幅と高さが取得できている ただし、端末によってはうまく取得できな い場合がある(Galaxy S IIIとか・・・) 7 \r
+ * \r
+ * http://sssslide.com/www.slideshare.net/hiroakiwakamatsu/ss-12718639\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
@@ -35,7 +53,7 @@ X.Dom = X.Class._override(
                                                };\r
                                        };\r
                                        \r
-                                       size = Node._fontSizeNode._rawNode.offsetHeight;\r
+                                       size = Node._fontSizeNode._rawObject.offsetHeight;\r
                                        if( X.Dom.baseFontSize !== size ){\r
                                                X.Dom.baseFontSize && X.Dom.asyncDispatch( 0, { type : X.Dom.Event.BASE_FONT_RESIZED, fontSize : size, w : X.Dom.w, h : X.Dom.h  } );\r
                                                X.Dom.baseFontSize = size;\r
@@ -96,8 +114,8 @@ X.Dom = X.Class._override(
                        h.appendTo = h.appendToRoot = h.before = h.after = h.clone = h.remove = h.destroy = h.prevNode = h.nextNode = h.createText = h.append = h.appendAt = h.empty = h.html = h.text =\r
                        r.appendTo = r.appendToRoot = r.before = r.after = r.clone = r.remove = r.destroy = r.prevNode = r.nextNode = new Function( 'return this' );\r
                        \r
-                       r._root  = h._root = r;\r
-                       r.parent = h;\r
+                       r._root   = h._root = r;\r
+                       r.parent  = h;\r
                        h._xnodes = [ r ];\r
 \r
                        X.Dom.listenOnce( X.Dom.Event.DOM_PRE_INIT, function(){\r
@@ -130,7 +148,7 @@ X.Dom = X.Class._override(
                                        X.Timer.add( 333, X.Dom._resize );\r
                                };\r
                                \r
-                               X.Dom.baseFontSize = Node._fontSizeNode._rawNode.offsetHeight;\r
+                               X.Dom.baseFontSize = Node._fontSizeNode._rawObject.offsetHeight;\r
                                \r
                                X.Dom.readyState = X.Dom.Event.XDOM_READY;\r
                                X.Dom.asyncDispatch( 0, { type : X.Dom.Event.XDOM_READY, w : X.Dom.w = size[ 0 ], h : X.Dom.h = size[ 1 ] } );\r
@@ -168,7 +186,7 @@ X.Dom = X.Class._override(
                                case 'beforeunload' :\r
                                        \r
                                        // ie では a href="javascript" な要素でも beforeunload が起こる\r
-                                       href = e.target && e.target.attr( 'href' );\r
+                                       href = e.target && e.target.attr && e.target.attr( 'href' );\r
                                        if( href && href.indexOf && href.indexOf( 'javascript:' ) === 0 ) return X.Callback.PREVENT_DEFAULT | X.Callback.STOP_PROPAGATION;\r
                                        \r
                                        return X.Dom.dispatch( { type : X.Dom.Event.BEFORE_UNLOAD } );\r
@@ -205,7 +223,7 @@ X.Dom = X.Class._override(
                                 */\r
                                X.Dom.asyncDispatch( 0, { type : type, w : X.Dom.w, h : X.Dom.h } );\r
                        };\r
-                       return X.EventDispatcher.prototype.listen.apply( X.Dom, arguments );\r
+                       return X_EventDispatcher_listen.apply( X.Dom, arguments );\r
                },\r
                \r
                getPointerPosition : function(){\r
@@ -267,13 +285,21 @@ X.Dom = X.Class._override(
 \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._rawObject.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
+               var size = Node._fontSizeNode._rawObject.offsetHeight;\r
                if( X.Dom.baseFontSize !== size ){\r
                        X.Dom.baseFontSize && X.Dom.asyncDispatch( 0, { type : X.Dom.Event.BASE_FONT_RESIZED, fontSize : size, w : X.Dom.w, h : X.Dom.h } );\r
                        X.Dom.baseFontSize = size;\r
@@ -317,35 +343,7 @@ if( document.layers ){
 X.Dom.EVENT_POINTER = navigator.msPointerEnabled || navigator.pointerEnabled;\r
 X.Dom.EVENT_TOUCH   = !X.Dom.EVENT_POINTER && window.ontouchstart !== undefined;\r
 \r
-X.Dom.moveToHead = {\r
-       STYLE   : true,\r
-       LINK    : true,\r
-       TITLE   : true,\r
-       BGSOUND : true,\r
-       AREA    : true,\r
-       BASE    : true,\r
-       META    : true\r
-};\r
 \r
-X.Dom.cleanupTagNames = {\r
-               SCRIPT   : true,\r
-               NOSCRIPT : true,\r
-               NOFRAMES : true,\r
-               '!'      : true, // ie\r
-               COMMENT  : true, // ie\r
-               NOEMBED  : true,\r
-               NOLAYER  : true\r
-       };\r
-X.Dom.skipCleanupTagNames = {\r
-       PRE       : true,\r
-       TEXTAREA  : true,\r
-       CODE      : true,\r
-       KBD       : true,\r
-       SAMP      : true,\r
-       XMP       : true,\r
-       PLAINTEXT : true,\r
-       LISTING   : true\r
-};\r
 \r
 X.Dom.CRLF = String.fromCharCode( 13 ) + String.fromCharCode( 10 );\r
                \r
@@ -407,7 +405,7 @@ X.Dom.getAbsolutePath = function( path ){
                ss = '//',\r
                _ary, ary, i = 0;\r
 \r
-       if( 'http:file'.indexOf( path.substr( 0, 4 ) ) !== -1 ) return path;\r
+       if( 'http:file:https:'.indexOf( path.substr( 0, 4 ) ) !== -1 ) return path;\r
        \r
        _ary = X.Dom.baseURL.split( ss );\r
        ary  = _ary[ 1 ].split( s );\r
@@ -430,7 +428,7 @@ if( window[ 'orientation' ] !== undefined ){
        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