2 X.View = (function( window, document ){
\r
4 ( document.compatMode !== "CSS1Compat" ? document.body : document.documentElement ) : window,
\r
5 lock = 0, w = 0, h = 0,
\r
8 /* -----------------------------------------------
\r
10 * Dean Edwards/Matthias Miller/John Resig
\r
14 if( X.View.ready ) return X.Cancel.UN_LISTEN;
\r
15 if( s = init.script ){
\r
16 s.parentNode.removeChild( s );
\r
17 s.onreadystatechange = new Function();
\r
18 s.onreadystatechange = null;
\r
22 X.View.ready = true;
\r
23 X.View.dispatch( { type : X.ViewEvent.SYS_READY, w : w, h : h } );
\r
24 return X.Cancel.UN_LISTEN;
\r
26 /* for ie9+/Mozilla/Opera9 */
\r
27 if( document.addEventListener ){
\r
28 X.DomEvent.add( document, 'DOMContentLoaded', init );
\r
29 // document.addEventListener( "DOMContentLoaded", init, false );
\r
32 // if this script in Head
\r
33 document.write( "<script id=__ie_onload defer src=javascript:void(0)><\/script>" );
\r
34 init.script = document.getElementById( "__ie_onload" );
\r
35 init.script.onreadystatechange = function(){
\r
36 this.readyState === 'complete' && init();
\r
39 if( X.UA.WebKit ){ // sniff
\r
40 X.Timer.add( 10, function(){
\r
41 if( !init ) return X.Cancel.UN_LISTEN;
\r
42 if( 'loaded|complete'.indexOf( document.readyState ) !== -1 ) return init();
\r
46 /* for other browsers */
\r
47 X.DomEvent.add( window, 'load', init );
\r
49 /* -----------------------------------------------
\r
53 function unlock(){ lock = 0; };
\r
56 resize = function(){
\r
59 size = X.View.getSize();
\r
60 if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED
\r
63 X.View.dispatch( { type : X.ViewEvent.VIEW_RESIZED, w : w, h : h } );
\r
65 X.Timer.once( 1, unlock );// delay unlock
\r
69 resize = function(){
\r
70 !lock++ && X.Timer.once( 40, delayResize );
\r
72 delayResize = function(){
\r
73 var size = X.View.getSize(),
\r
75 if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED
\r
78 X.View.dispatch( { type : X.ViewEvent.VIEW_RESIZED, w : w, h : h } );
\r
80 X.Timer.once( 1, unlock );
\r
84 X.View = X.Class._override( new X.EventDispatcher(),
\r
87 getSize : ( view.innerWidth ?
\r
89 return [ view.innerWidth, view.innerHeight ];
\r
92 return [ view.clientWidth, view.clientHeight ];
\r
95 /* 要素が視界に入った http://remysharp.com/2009/01/26/element-in-view-event-plugin/ */
\r
96 inView : function( elm ){
\r
102 X.View.listenOnce( X.ViewEvent.SYS_READY, function(){
\r
104 X.Timer.add( 100, resize );
\r
106 X.DomEvent.add( window, 'resize', resize );
\r
111 })( window, document );
\r
114 X.View.listen( X.ViewEvent.SYS_READY, function(e){ console.log( 'X.View DomReady ' + X.View.ready ) } );
\r
116 X.View.listen( X.ViewEvent.VIEW_RESIZED, function(e){ console.log( 'X.View VIEW_RESIZED ' + e.w + 'x' + e.h ) } );
\r