1 /* 2 Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved. 3 For licensing, see LICENSE.html or http://ckeditor.com/license 4 */ 5 6 /** 7 * @fileOverview Defines the {@link CKEDITOR.dom.document} class, which 8 * represents a DOM document. 9 */ 10 11 /** 12 * Represents a DOM window. 13 * @constructor 14 * @augments CKEDITOR.dom.domObject 15 * @param {Object} domWindow A native DOM window. 16 * @example 17 * var document = new CKEDITOR.dom.window( window ); 18 */ 19 CKEDITOR.dom.window = function( domWindow ) 20 { 21 CKEDITOR.dom.domObject.call( this, domWindow ); 22 }; 23 24 CKEDITOR.dom.window.prototype = new CKEDITOR.dom.domObject(); 25 26 CKEDITOR.tools.extend( CKEDITOR.dom.window.prototype, 27 /** @lends CKEDITOR.dom.window.prototype */ 28 { 29 /** 30 * Moves the selection focus to this window. 31 * @function 32 * @example 33 * var win = new CKEDITOR.dom.window( window ); 34 * <b>win.focus()</b>; 35 */ 36 focus : function() 37 { 38 // Webkit is sometimes failed to focus iframe, blur it first(#3835). 39 if ( CKEDITOR.env.webkit && this.$.parent ) 40 this.$.parent.focus(); 41 this.$.focus(); 42 }, 43 44 /** 45 * Gets the width and height of this window's viewable area. 46 * @function 47 * @returns {Object} An object with the "width" and "height" 48 * properties containing the size. 49 * @example 50 * var win = new CKEDITOR.dom.window( window ); 51 * var size = <b>win.getViewPaneSize()</b>; 52 * alert( size.width ); 53 * alert( size.height ); 54 */ 55 getViewPaneSize : function() 56 { 57 var doc = this.$.document, 58 stdMode = doc.compatMode == 'CSS1Compat'; 59 return { 60 width : ( stdMode ? doc.documentElement.clientWidth : doc.body.clientWidth ) || 0, 61 height : ( stdMode ? doc.documentElement.clientHeight : doc.body.clientHeight ) || 0 62 }; 63 }, 64 65 /** 66 * Gets the current position of the window's scroll. 67 * @function 68 * @returns {Object} An object with the "x" and "y" properties 69 * containing the scroll position. 70 * @example 71 * var win = new CKEDITOR.dom.window( window ); 72 * var pos = <b>win.getScrollPosition()</b>; 73 * alert( pos.x ); 74 * alert( pos.y ); 75 */ 76 getScrollPosition : function() 77 { 78 var $ = this.$; 79 80 if ( 'pageXOffset' in $ ) 81 { 82 return { 83 x : $.pageXOffset || 0, 84 y : $.pageYOffset || 0 85 }; 86 } 87 else 88 { 89 var doc = $.document; 90 return { 91 x : doc.documentElement.scrollLeft || doc.body.scrollLeft || 0, 92 y : doc.documentElement.scrollTop || doc.body.scrollTop || 0 93 }; 94 } 95 } 96 }); 97