リビジョン | 76ea1040608829b653422cf51b3490801d2ec1fa (tree) |
---|---|
日時 | 2016-01-29 11:22:57 |
作者 | itozyun <itozyun@user...> |
コミッター | itozyun |
Version 0.6.208, bug fixes.
@@ -10,7 +10,7 @@ | ||
10 | 10 | <meta http-equiv="imagetoolbar" content="no"> |
11 | 11 | <meta name="format-detection" content="telephone=no"> |
12 | 12 | <meta name="apple-mobile-web-app-capable" content="yes"> |
13 | -<meta name="viewport" id="dynamic-viewport" content="width=device-width,target-densitydpi=device-dpi,initial-scale=1,user-scalable=0,maximum-scale=1,minimum-scale=1"> | |
13 | +<meta name="viewport" id="dynamic-viewport" content="width=device-width,target-densitydpi=medium-dpi,initial-scale=1,user-scalable=0,maximum-scale=1,minimum-scale=1"> | |
14 | 14 | <link rel="stylesheet" type="text/css" media="all" href="css/xui.css"> |
15 | 15 | |
16 | 16 | <script type="text/javascript" src="js/import.js"></script> |
@@ -55,75 +55,78 @@ var X_UA = X[ 'UA' ] = {}, | ||
55 | 55 | |
56 | 56 | // 4:3 model |
57 | 57 | v = screen.width === screen.height * 1.5 || screen.width * 1.5 === screen.height; |
58 | - | |
59 | - if( sys === 'iPhone' ){ | |
60 | - /** | |
61 | - * @alias X.UA.iPhone | |
62 | - * @type {boolean} | |
63 | - */ | |
64 | - X_UA[ 'iPhone' ] = true; | |
65 | - if( v ){ | |
58 | + | |
59 | + switch( sys ){ | |
60 | + case 'iPhone' : | |
61 | + case 'iPhone Simulator' : | |
66 | 62 | /** |
67 | - * iPhone4s以下 | |
68 | - * @alias X.UA.iPhone_4s | |
63 | + * @alias X.UA.iPhone | |
69 | 64 | * @type {boolean} |
70 | 65 | */ |
71 | - X_UA[ 'iPhone_4s' ] = true; | |
72 | - | |
73 | - if( i ){ | |
66 | + X_UA[ 'iPhone' ] = true; | |
67 | + if( v ){ | |
74 | 68 | /** |
75 | - * iPhone3GS以下 | |
76 | - * @alias X.UA.iPhone_3GS | |
69 | + * iPhone4s以下 | |
70 | + * @alias X.UA.iPhone_4s | |
77 | 71 | * @type {boolean} |
78 | 72 | */ |
79 | - X_UA[ 'iPhone_3GS' ] = true; | |
80 | - }; | |
81 | - }; | |
82 | - | |
83 | - //alert( 'iPhone ' + ( X_UA[ 'iPhone_3GS' ] ? '3GS以下' : X_UA[ 'iPhone_4s' ] ? '4s以下' : '5以上' ) ); | |
84 | - }; | |
85 | - if( sys === 'iPad' ){ | |
86 | - /** | |
87 | - * @alias X.UA.iPad | |
88 | - * @type {boolean} | |
89 | - */ | |
90 | - X_UA[ 'iPad' ] = true; | |
91 | - if( i ){ | |
73 | + X_UA[ 'iPhone_4s' ] = true; | |
74 | + | |
75 | + if( i ){ | |
76 | + /** | |
77 | + * iPhone3GS以下 | |
78 | + * @alias X.UA.iPhone_3GS | |
79 | + * @type {boolean} | |
80 | + */ | |
81 | + X_UA[ 'iPhone_3GS' ] = true; | |
82 | + }; | |
83 | + }; | |
84 | + break; | |
85 | + | |
86 | + case 'iPad' : | |
87 | + case 'iPad Simulator' : | |
92 | 88 | /** |
93 | - * iPad2以下または初代iPad mini 以下 | |
94 | - * @alias X.UA.iPad_2Mini1 | |
89 | + * @alias X.UA.iPad | |
95 | 90 | * @type {boolean} |
96 | 91 | */ |
97 | - X_UA[ 'iPad_2Mini1' ] = true; | |
98 | - }; | |
99 | - }; | |
100 | - if( sys === 'iPod' ){ | |
101 | - /** | |
102 | - * @alias X.UA.iPod | |
103 | - * @type {boolean} | |
104 | - */ | |
105 | - X_UA[ 'iPod' ] = true; | |
106 | - | |
107 | - if( v ){ | |
92 | + X_UA[ 'iPad' ] = true; | |
93 | + if( i ){ | |
94 | + /** | |
95 | + * iPad2以下または初代iPad mini 以下 | |
96 | + * @alias X.UA.iPad_2Mini1 | |
97 | + * @type {boolean} | |
98 | + */ | |
99 | + X_UA[ 'iPad_2Mini1' ] = true; | |
100 | + }; | |
101 | + break; | |
102 | + | |
103 | + case 'iPod' : | |
104 | + case 'iPod Simulator' : // 必要?? | |
108 | 105 | /** |
109 | - * iPod4以下 | |
110 | - * @alias X.UA.iPod_4 | |
106 | + * @alias X.UA.iPod | |
111 | 107 | * @type {boolean} |
112 | 108 | */ |
113 | - X_UA[ 'iPod_4' ] = true; | |
114 | - | |
115 | - if( i ){ | |
109 | + X_UA[ 'iPod' ] = true; | |
110 | + | |
111 | + if( v ){ | |
116 | 112 | /** |
117 | - * iPod3以下 | |
118 | - * @alias X.UA.iPod_3 | |
113 | + * iPod4以下 | |
114 | + * @alias X.UA.iPod_4 | |
119 | 115 | * @type {boolean} |
120 | 116 | */ |
121 | - X_UA[ 'iPod_3' ] = true; | |
122 | - }; | |
123 | - }; | |
124 | - //alert( 'iPod touch ' + ( X_UA[ 'iPod_3' ] ? '3以下' : X_UA[ 'iPod_4' ] ? '4以下' : '5以上' ) ); | |
117 | + X_UA[ 'iPod_4' ] = true; | |
118 | + | |
119 | + if( i ){ | |
120 | + /** | |
121 | + * iPod3以下 | |
122 | + * @alias X.UA.iPod_3 | |
123 | + * @type {boolean} | |
124 | + */ | |
125 | + X_UA[ 'iPod_3' ] = true; | |
126 | + }; | |
127 | + }; | |
128 | + break; | |
125 | 129 | }; |
126 | - // TODO iPhone Simulator | |
127 | 130 | |
128 | 131 | console.log( '>> iOS : ' + X_UA[ 'iOS' ] ); |
129 | 132 | } else |
@@ -692,16 +695,16 @@ var X_UA = X[ 'UA' ] = {}, | ||
692 | 695 | */ |
693 | 696 | X_UA[ 'Safari' ] = v; |
694 | 697 | } else |
695 | - if( i <= 528.16 ){ | |
696 | - X_UA[ 'Safari' ] = i < 73 ? 0.8 : | |
697 | - i < 85 ? 0.9 : | |
698 | - i < 100 ? 1 : | |
699 | - i < 125 ? 1.1 : | |
700 | - i < 312 ? 1.2 : | |
701 | - i < 412 ? 1.3 : | |
702 | - i <= 419.3 ? 2 : | |
703 | - i <= 525.13 ? 3 : | |
704 | - i <= 525.25 ? 3.1 : 3.2; | |
698 | + if( v <= 528.16 ){ | |
699 | + X_UA[ 'Safari' ] = v < 73 ? 0.8 : | |
700 | + v < 85 ? 0.9 : | |
701 | + v < 100 ? 1 : | |
702 | + v < 125 ? 1.1 : | |
703 | + v < 312 ? 1.2 : | |
704 | + v < 412 ? 1.3 : | |
705 | + v <= 419.3 ? 2 : | |
706 | + v <= 525.13 ? 3 : | |
707 | + v <= 525.25 ? 3.1 : 3.2; | |
705 | 708 | }; |
706 | 709 | }; |
707 | 710 |
@@ -214,7 +214,7 @@ X_Class_CommonMethods = | ||
214 | 214 | proto = sClass.prototype, |
215 | 215 | i = X_Class_SUPER_CALLER.indexOf( me ), |
216 | 216 | args = arguments, |
217 | - p, name, t, sFunc, ret; | |
217 | + p, name, stack, t, sFunc, ret; | |
218 | 218 | |
219 | 219 | if( X_Type_isFunction( myFunc ) ){ |
220 | 220 | for( p in proto ){ |
@@ -12,17 +12,26 @@ | ||
12 | 12 | X[ 'XML' ] = XMLWrapper; |
13 | 13 | |
14 | 14 | /** |
15 | - * XML 探索用のラッパークラスです | |
15 | + * XML ツリーを探索して読み出す用のラッパークラスです.XML を操作する機能はありません、あしからず… | |
16 | 16 | * @alias X.XML |
17 | 17 | * @class XML 探索用のラッパークラスです |
18 | 18 | * @constructor |
19 | 19 | * @param {XMLElement} |
20 | 20 | */ |
21 | 21 | function XMLWrapper( xml ){ |
22 | - this._rawXML = xml; | |
22 | + if( xml ){ | |
23 | + this._rawXML = xml; | |
24 | + this.tagName = xml.tagName; | |
25 | + }; | |
23 | 26 | }; |
24 | 27 | |
25 | 28 | /** |
29 | + * tagName または nodeName | |
30 | + * @alias X.XML.prototype.tagName | |
31 | + * @type {string} | |
32 | + */ | |
33 | +XMLWrapper.prototype.tagName = ''; | |
34 | +/** | |
26 | 35 | * ラップした xml の数 常に1または0, XMLList の場合2以上 |
27 | 36 | * @alias X.XML.prototype.length |
28 | 37 | * @type {Number} |
@@ -68,7 +68,8 @@ var X_Window = X[ 'Util' ][ 'Window' ] = X_EventDispatcher[ 'inherits' ]( | ||
68 | 68 | 'url' : function( url ){ |
69 | 69 | var pair = X_Pair_get( this ); |
70 | 70 | |
71 | - pair && ( pair.location.href = url ); | |
71 | + pair && ( pair.page.location.href = url ); | |
72 | + return this; | |
72 | 73 | }, |
73 | 74 | |
74 | 75 | /** |
@@ -103,13 +104,13 @@ var X_Window = X[ 'Util' ][ 'Window' ] = X_EventDispatcher[ 'inherits' ]( | ||
103 | 104 | }, |
104 | 105 | |
105 | 106 | /** |
106 | - * 別窓にfocusする | |
107 | + * 別窓にfocusする ..firefox でできない... | |
107 | 108 | * @return {Window} チェーンメソッド |
108 | 109 | */ |
109 | 110 | 'focus' : function(){ |
110 | 111 | var pair = X_Pair_get( this ); |
111 | 112 | |
112 | - pair && pair[ 'focus' ](); | |
113 | + pair && pair.page[ 'focus' ](); | |
113 | 114 | return this; |
114 | 115 | } |
115 | 116 | } |
@@ -90,7 +90,7 @@ var X_WebAudio_context = // 4s 以下ではない iPad 2G または iPad mi | ||
90 | 90 | //!X_UA[ 'Blink' ] && |
91 | 91 | // Firefox40.0.5 + Windows8 で音声が途中から鳴らなくなる |
92 | 92 | // Firefox41.0.1 + Windows8 で音声が途中から鳴らなくなる |
93 | - !( 40 <= X_UA[ 'Gecko' ] && X_UA[ 'Gecko' ] < 44 && X_UA[ 'Windows' ] ) && | |
93 | + !( 40 <= X_UA[ 'Gecko' ] && X_UA[ 'Gecko' ] < 45 && X_UA[ 'Windows' ] ) && | |
94 | 94 | ( window[ 'AudioContext' ] || window[ 'webkitAudioContext' ] ), |
95 | 95 | X_WebAudio_BUFFER_LIST = [], |
96 | 96 | X_WebAudio_need1stTouch = X_UA[ 'iOS' ], |
@@ -328,7 +328,11 @@ if( X_Audio_constructor ){ | ||
328 | 328 | //case 'ratechange' : // defaultPlaybackRate属性とplaybackRate属性のどちらかが更新された場合に発生 |
329 | 329 | //case 'volumechange' : // volume属性とmuted属性のどちらかが変化した場合に発生 |
330 | 330 | break; |
331 | - | |
331 | + | |
332 | + case 'seeking' : // シークがtrueに変化し、イベントを発生させるのに十分な時間がシーク操作にかかっている場合に発生 | |
333 | + eventType = X_EVENT_MEDIA_SEEKING; | |
334 | + if( X_HTMLAudio_seekingFixIOS ) this._seekingFixON = true; | |
335 | + break; | |
332 | 336 | case 'seeked' : |
333 | 337 | if( X_HTMLAudio_seekingFixIOS ) this._seekingFixON = false; |
334 | 338 | break; |
@@ -336,10 +340,6 @@ if( X_Audio_constructor ){ | ||
336 | 340 | case 'waiting' : // 次のフレームが利用不可のため再生を停止したが、そのフレームがやがて利用可能になると想定している場合に発生 |
337 | 341 | eventType = X_EVENT_MEDIA_WAITING; |
338 | 342 | break; |
339 | - case 'seeking' : // シークがtrueに変化し、イベントを発生させるのに十分な時間がシーク操作にかかっている場合に発生 | |
340 | - eventType = X_EVENT_MEDIA_SEEKING; | |
341 | - if( X_HTMLAudio_seekingFixIOS ) this._seekingFixON = true; | |
342 | - break; | |
343 | 343 | }; |
344 | 344 | |
345 | 345 | // duration は Infinity, NaN, 0 の場合があるため、これを除外する |