リビジョン | a720658bd6302a1bd5efae47333b6df793370f3d (tree) |
---|---|
日時 | 2015-12-02 11:01:16 |
作者 | itozyun <itozyun@user...> |
コミッター | itozyun |
Verison 0.6.198, add jsdoc commnets.
@@ -351,6 +351,7 @@ X[ 'Class' ] = /** @lends X.Class */ { | ||
351 | 351 | */ |
352 | 352 | 'NONE' : X_Class.NONE, |
353 | 353 | |
354 | + // TODO この指定、フレームワーク内だけ! | |
354 | 355 | /** |
355 | 356 | * インスタンスは破棄時(this.kill())に回収され、次回の new MyClass() 時に再利用されます。 |
356 | 357 | * @const |
@@ -36,7 +36,7 @@ | ||
36 | 36 | 'href' : true, |
37 | 37 | 'longdesc' : true, |
38 | 38 | 'profile' : true, |
39 | - 'src' : true, | |
39 | + 'src' : true, // lowsrc, dynsrc | |
40 | 40 | 'usemap' : true |
41 | 41 | }, |
42 | 42 |
@@ -8,7 +8,7 @@ | ||
8 | 8 | */ |
9 | 9 | var Node = X[ 'Node' ] = X_EventDispatcher[ 'inherits' ]( |
10 | 10 | 'X.Node', |
11 | - X_Class.POOL_OBJECT, | |
11 | + X_Class.NONE, | |
12 | 12 | { |
13 | 13 | /** |
14 | 14 | * 要素に振られるユニークID |
@@ -9,7 +9,6 @@ | ||
9 | 9 | * |
10 | 10 | * TODO X.Class で作り、kill を強要する |
11 | 11 | */ |
12 | - | |
13 | 12 | X[ 'XML' ] = XMLWrapper; |
14 | 13 | |
15 | 14 | /** |
@@ -17,12 +16,17 @@ X[ 'XML' ] = XMLWrapper; | ||
17 | 16 | * @alias X.XML |
18 | 17 | * @class XML 探索用のラッパークラスです |
19 | 18 | * @constructor |
20 | - * @param {xml} | |
19 | + * @param {XMLElement} | |
21 | 20 | */ |
22 | 21 | function XMLWrapper( xml ){ |
23 | 22 | this._rawXML = xml; |
24 | 23 | }; |
25 | 24 | |
25 | +/** | |
26 | + * ラップした xml の数 常に1または0, XMLList の場合2以上 | |
27 | + * @alias X.XML.prototype.length | |
28 | + * @type {Number} | |
29 | + */ | |
26 | 30 | XMLWrapper.prototype.length = 1; |
27 | 31 | XMLWrapper.prototype[ 'parent' ] = XMLWrapper_parent; |
28 | 32 | XMLWrapper.prototype[ 'has' ] = XMLWrapper_has; |
@@ -30,6 +34,11 @@ XMLWrapper.prototype[ 'get' ] = XMLWrapper_get; | ||
30 | 34 | XMLWrapper.prototype[ 'val' ] = XMLWrapper_val; |
31 | 35 | XMLWrapper.prototype[ 'find' ] = XMLWrapper_find; |
32 | 36 | |
37 | +/** | |
38 | + * 親要素を返す、ルート要素の場合 null を返す | |
39 | + * @alias X.XML.prototype.parent | |
40 | + * @return {X.XML} 親要素 | |
41 | + */ | |
33 | 42 | function XMLWrapper_parent(){ |
34 | 43 | if( this.length === 1 ) return this._rawXML && this._rawXML.parentNode ? new XMLWrapper( this._rawXML.parentNode ) : null; |
35 | 44 | if( this.length === 0 ) return null; |
@@ -37,10 +46,23 @@ function XMLWrapper_parent(){ | ||
37 | 46 | return this[ 0 ].parentNode ? ( new XMLWrapper( this[ 0 ].parentNode ) ) : null; |
38 | 47 | }; |
39 | 48 | |
49 | +/** | |
50 | + * セレクターにヒットした要素数を返す | |
51 | + * @alias X.XML.prototype.has | |
52 | + * @param {string} queryString XML セレクター文字列 | |
53 | + * @return {number} | |
54 | + */ | |
40 | 55 | function XMLWrapper_has( queryString ){ |
41 | 56 | return !!this.find( queryString ).length; |
42 | 57 | }; |
43 | 58 | |
59 | +/** | |
60 | + * <p>X.XML では常に自信を返す | |
61 | + * <p>X.XMLList ではラップした xml 群から index のものを返す | |
62 | + * @alias X.XML.prototype.get | |
63 | + * @param {number} index | |
64 | + * @return {X.XML} X.XML では自身、X.XMLList では index の X.XML | |
65 | + */ | |
44 | 66 | function XMLWrapper_get( index ){ |
45 | 67 | if( this.length === 1 ) return this; |
46 | 68 | if( this.length === 0 ) return null; |
@@ -52,6 +74,13 @@ function XMLWrapper_get( index ){ | ||
52 | 74 | null; |
53 | 75 | }; |
54 | 76 | |
77 | +/** | |
78 | + * セレクターにヒットした要素の内容を指定されたデータ型で返す。複数要素にヒットした場合、0番目の要素の内容を使用する。 | |
79 | + * @alias X.XML.prototype.val | |
80 | + * @param {string} queryString XML セレクター文字列 | |
81 | + * @param {string} type 'number','int','boolean','string' | |
82 | + * @return {boolean|number|string} 内容を型変換した値 | |
83 | + */ | |
55 | 84 | function XMLWrapper_val( queryString, type ){ |
56 | 85 | var //attr_textContent = X_UA[ 'IE' ] < 9 || X_UA[ 'Opera' ] ? 'innerText' : X_UA[ 'IE9' ] ? 'text' : 'textContent', |
57 | 86 | wrapper, xml, v; |
@@ -98,6 +127,12 @@ function XMLWrapper_val( queryString, type ){ | ||
98 | 127 | return v || ''; |
99 | 128 | }; |
100 | 129 | |
130 | +/** | |
131 | + * セレクターにヒットした要素を返す。0~1個の要素がヒットした場合は X.XML を、それ以上の場合は X.XMLList を返す。 | |
132 | + * @alias X.XML.prototype.find | |
133 | + * @param {string} queryString セレクター文字列 | |
134 | + * @return {X.XML|X.XMLList} | |
135 | + */ | |
101 | 136 | function XMLWrapper_find( queryString ){ |
102 | 137 | |
103 | 138 | var scope = this.constructor === XMLListWrapper ? this : [ this._rawXML ], |
@@ -576,6 +611,13 @@ var XMLWrapper_filter = { | ||
576 | 611 | } |
577 | 612 | }; |
578 | 613 | |
614 | +/** | |
615 | + * XML配列を扱う XML 探索用のラッパークラスです | |
616 | + * @alias X.XMLList | |
617 | + * @class XMLList XML配列を扱う XML 探索用のラッパークラスです | |
618 | + * @constructor | |
619 | + * @extends {X.XML} | |
620 | + */ | |
579 | 621 | function XMLListWrapper( xmlList ){ |
580 | 622 | var i = 0, l = xmlList ? xmlList.length : 0; |
581 | 623 | for( ; i < l; ++i ){ |
@@ -93,23 +93,38 @@ X[ 'OAuth2' ] = X_EventDispatcher[ 'inherits' ]( | ||
93 | 93 | |
94 | 94 | /** |
95 | 95 | * 認可用 window をポップアップする。ポップアップブロックが働かないように必ず pointer event 内で呼ぶこと。 |
96 | + * <dl> | |
97 | + * <dt>1 : <dd>認可用 window がポップアップ中(自身) | |
98 | + * <dt>2 : <dd>コードを認可中 | |
99 | + * <dt>3 : <dd>トークンのリフレッシュ中 | |
100 | + * <dt>4 : <dd>接続 | |
101 | + * <dt>5 : <dd>他のOAuth2サービスの認可用 window がポップアップ中 | |
102 | + * </dl> | |
103 | + * @return {number} | |
96 | 104 | */ |
97 | 105 | 'requestAuth' : function(){ |
98 | - var url, w, h; | |
106 | + var e = X_EventDispatcher_CURRENT_EVENTS[ X_EventDispatcher_CURRENT_EVENTS.length - 1 ], | |
107 | + w, h; | |
108 | + | |
99 | 109 | // TODO pointer event 内か?チェック |
110 | + if( !e || !e[ 'pointerType' ] ){ | |
111 | + alert( 'タッチイベント以外での popup! ' + ( e ? e.type : '' ) ); | |
112 | + return; | |
113 | + }; | |
114 | + | |
100 | 115 | // 二つ以上の popup を作らない |
101 | 116 | if( X_NET_OAUTH2_authorizationWindow ) return; |
102 | 117 | |
103 | 118 | pair = X_Pair_get( this ); |
104 | 119 | |
105 | 120 | if( pair.net || pair.oauth2State ) return; |
106 | - | |
107 | - url = pair[ 'authorizeEndpoint' ]; | |
121 | + | |
108 | 122 | w = pair[ 'authorizeWindowWidth' ] || 500; |
109 | 123 | h = pair[ 'authorizeWindowHeight' ] || 500; |
110 | 124 | |
125 | + // TODO X.Util.Window | |
111 | 126 | X_NET_OAUTH2_authorizationWindow = window.open( |
112 | - X_URL_create( url, | |
127 | + X_URL_create( pair[ 'authorizeEndpoint' ], | |
113 | 128 | { |
114 | 129 | 'response_type' : 'code', |
115 | 130 | 'client_id' : pair[ 'clientID' ], |
@@ -356,11 +371,11 @@ function X_NET_OAUTH2_onXHR401Error( oauth2, e ){ | ||
356 | 371 | }; |
357 | 372 | |
358 | 373 | // http://d.hatena.ne.jp/ritou/20110402/1301679908 |
359 | - if ( bearerParams && bearerParams.indexOf( ' error=' ) === -1 ) { // bearerParams.error == undefined | |
374 | + if( bearerParams && bearerParams.indexOf( ' error=' ) === -1 ){ // bearerParams.error == undefined | |
360 | 375 | pair.oauth2State = 0; |
361 | 376 | oauth2[ 'asyncDispatch' ]( X_EVENT_NEED_AUTH ); |
362 | 377 | } else |
363 | - if ((( bearerParams && bearerParams.indexOf( 'invalid_token' ) !== -1 ) || !headersExposed) && X_OAuth2_getRefreshToken( oauth2 ) ) { | |
378 | + if( ( ( bearerParams && bearerParams.indexOf( 'invalid_token' ) !== -1 ) || !headersExposed ) && X_OAuth2_getRefreshToken( oauth2 ) ){ | |
364 | 379 | X_OAuth2_removeAccessToken( oauth2 ); // It doesn't work any more. |
365 | 380 | pair.oauth2State = 3; |
366 | 381 | oauth2[ 'refreshToken' ](); |