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
13 if( X.View.ready ) return;
\r
14 X.View.ready = true;
\r
15 X.View.dispatch( { type : X.ViewEvent.SYS_READY, w : w, h : h } );
\r
17 /* for Mozilla/Opera9 */
\r
18 if( document.addEventListener ){
\r
19 document.addEventListener( "DOMContentLoaded", init, false );
\r
22 document.write( "<script id=__ie_onload defer src=javascript:void(0)><\/script>" );
\r
23 var _script = document.getElementById( "__ie_onload" );
\r
24 _script.onreadystatechange = function(){
\r
25 if( this.readyState == "complete" ){
\r
26 this.parentNode.removeElement( this );
\r
27 this.onreadystatechange = new Function();
\r
28 this.onreadystatechange = null;
\r
34 if( X.UA.WebKit ){ // sniff
\r
35 var _timer = setInterval( function(){
\r
36 if( /loaded|complete/.test( document.readyState ) ){
\r
37 clearInterval( _timer );
\r
43 /* for other browsers */
\r
44 X.DomEvent.add( window, 'load', init );
\r
46 /* -----------------------------------------------
\r
50 function unlock(){ lock = 0; };
\r
53 resize = function(){
\r
56 size = X.View.getSize();
\r
57 if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED
\r
60 X.View.dispatch( { type : X.ViewEvent.VIEW_RESIZED, w : w, h : h } );
\r
62 X.Timer.once( 1, unlock );// delay unlock
\r
66 resize = function(){
\r
67 !lock++ && X.Timer.once( 40, delayResize );
\r
69 delayResize = function(){
\r
70 var size = X.View.getSize(),
\r
72 if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED
\r
75 X.View.dispatch( { type : X.ViewEvent.VIEW_RESIZED, w : w, h : h } );
\r
77 X.Timer.once( 1, unlock );
\r
81 X.View = X.Class._override( new X.EventDispatcher(),
\r
84 getSize : ( view.innerWidth ?
\r
86 return [ view.innerWidth, view.innerHeight ];
\r
89 return [ view.clientWidth, view.clientHeight ];
\r
92 /* 要素が視界に入った http://remysharp.com/2009/01/26/element-in-view-event-plugin/ */
\r
93 inView : function( elm ){
\r
99 X.View.listenOnce( X.ViewEvent.SYS_READY, function(){
\r
101 X.Timer.add( 100, 0, resize );
\r
103 X.DomEvent.add( window, 'resize', resize );
\r
108 })( window, document );
\r
111 X.View.listen( X.ViewEvent.SYS_READY, function(e){ console.log( 'X.View DomReady ' + X.View.ready ) } );
\r
113 X.View.listen( X.ViewEvent.VIEW_RESIZED, function(e){ console.log( 'X.View VIEW_RESIZED ' + e.w + 'x' + e.h ) } );
\r