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
31 // if this script in Head
\r
32 document.write( "<script id=__ie_onload defer src=javascript:void(0)><\/script>" );
\r
33 init.script = document.getElementById( "__ie_onload" );
\r
34 init.script.onreadystatechange = function(){
\r
35 this.readyState === 'complete' && init();
\r
38 if( X.UA.WebKit ){ // sniff
\r
39 X.Timer.add( 10, function(){
\r
40 if( !init ) return X.Cancel.UN_LISTEN;
\r
41 if( 'loaded|complete'.indexOf( document.readyState ) !== -1 ) return init();
\r
45 /* for other browsers */
\r
46 X.DomEvent.add( window, 'load', init );
\r
48 /* -----------------------------------------------
\r
52 function unlock(){ lock = 0; };
\r
55 resize = function(){
\r
58 size = X.View.getSize();
\r
59 if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED
\r
62 X.View.dispatch( { type : X.ViewEvent.VIEW_RESIZED, w : w, h : h } );
\r
64 X.Timer.once( 1, unlock );// delay unlock
\r
68 resize = function(){
\r
69 !lock++ && X.Timer.once( 40, delayResize );
\r
71 delayResize = function(){
\r
72 var size = X.View.getSize(),
\r
74 if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED
\r
77 X.View.dispatch( { type : X.ViewEvent.VIEW_RESIZED, w : w, h : h } );
\r
79 X.Timer.once( 1, unlock );
\r
83 X.View = X.Class._override( new X.EventDispatcher(),
\r
86 getSize : ( view.innerWidth ?
\r
88 return [ view.innerWidth, view.innerHeight ];
\r
91 return [ view.clientWidth, view.clientHeight ];
\r
94 /* 要素が視界に入った http://remysharp.com/2009/01/26/element-in-view-event-plugin/ */
\r
95 inView : function( elm ){
\r
101 X.View.listenOnce( X.ViewEvent.SYS_READY, function(){
\r
104 X.Timer.add( 100, resize );
\r
107 b.appendChild( x = document.createElement( 'div' ) );
\r
108 x.style.cssText = 'width:1px;height:1px;line-height:1px;filter:progid:DXImageTransform.Microsoft.Shadow()';
\r
109 b.className += [ b.className === '' ? '' : ' ', 'ActiveX-', 1 < x.offsetHeight ? 'enabled' : 'disabled' ].join( '' );
\r
110 b.removeChild( x );
\r
113 X.DomEvent.add( window, 'resize', resize );
\r
118 })( window, document );
\r
121 X.View.listen( X.ViewEvent.SYS_READY, function(e){ console.log( 'X.View DomReady ' + X.View.ready ) } );
\r
123 X.View.listen( X.ViewEvent.VIEW_RESIZED, function(e){ console.log( 'X.View VIEW_RESIZED ' + e.w + 'x' + e.h ) } );
\r