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
12 function unlock(){ lock = 0; };
\r
15 resize = function(){
\r
18 size = X.View.getSize();
\r
19 if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED
\r
22 X.View.dispatch( { type : X.ViewEvent.VIEW_RESIZED, w : w, h : h } );
\r
24 X.Timer.once( 1, unlock );// delay unlock
\r
28 resize = function(){
\r
29 !lock++ && X.Timer.once( 40, delayResize );
\r
31 delayResize = function(){
\r
32 var size = X.View.getSize(),
\r
34 if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED
\r
37 X.View.dispatch( { type : X.ViewEvent.VIEW_RESIZED, w : w, h : h } );
\r
39 X.Timer.once( 1, unlock );
\r
43 X.View = X.Class._override( new X.EventDispatcher(),
\r
47 getSize : ( view.innerWidth ?
\r
49 return [ view.innerWidth, view.innerHeight ];
\r
52 return [ view.clientWidth, view.clientHeight ];
\r
55 getPointerPosition : function(){
\r
58 /* 要素が視界に入った http://remysharp.com/2009/01/26/element-in-view-event-plugin/ */
\r
59 inView : function( elm ){
\r
64 if( X.View.ready ) return X.Cancel.UN_LISTEN;
\r
65 if( s = X.View._script ){
\r
66 s.parentNode.removeChild( s );
\r
67 s.onreadystatechange = new Function();
\r
68 s.onreadystatechange = null;
\r
69 delete X.View._script;
\r
71 delete X.View._init;
\r
72 X.View.ready = true;
\r
73 X.View.dispatch( { type : X.ViewEvent.SYS_READY } );
\r
74 return X.Cancel.UN_LISTEN;
\r
79 X.View.listenOnce( X.ViewEvent.SYS_READY, function(){
\r
81 if( X.UA.IE && X.UA.IE < 9 ){
\r
82 X.Timer.add( 100, resize );
\r
84 b.appendChild( x = document.createElement( 'div' ) );
\r
85 x.style.cssText = 'width:1px;height:1px;line-height:1px;filter:progid:DXImageTransform.Microsoft.Shadow()';
\r
86 b.className += [ b.className === '' ? '' : ' ', 'ActiveX-', 1 < x.offsetHeight ? 'enabled' : 'disabled' ].join( '' );
\r
89 X.DomEvent.add( window, 'resize', resize );
\r
94 })( window, document );
\r
97 /* -----------------------------------------------
\r
99 * Dean Edwards/Matthias Miller/John Resig
\r
101 /* for ie9+/Mozilla/Opera9 */
\r
102 if( document.addEventListener ){
\r
103 X.DomEvent.add( document, 'DOMContentLoaded', X.View._init );
\r
106 // if this script in Head
\r
107 document.write( "<script id=__ie_onload defer src=javascript:void(0)><\/script>" );
\r
108 X.View._script = document.getElementById( "__ie_onload" );
\r
109 X.View._script.onreadystatechange = function(){
\r
110 this.readyState === 'complete' && X.View._init();
\r
113 if( X.UA.WebKit ){ // sniff
\r
114 X.Timer.add( 10, function(){
\r
115 if( !X.View._init ) return X.Cancel.UN_LISTEN;
\r
116 if( 'loaded|complete'.indexOf( document.readyState ) !== -1 ) return X.View._init();
\r
120 /* for other browsers */
\r
121 X.DomEvent.add( window, 'load', X.View._init );
\r
124 X.View.listen( X.ViewEvent.SYS_READY, function(e){ console.log( 'X.View DomReady ' + X.View.ready ) } );
\r
126 X.View.listen( X.ViewEvent.VIEW_RESIZED, function(e){ console.log( 'X.View VIEW_RESIZED ' + e.w + 'x' + e.h ) } );
\r