Importation initiale du code de CKEditor 3.6.1.
[ckeditor.git] / _source / core / dom / window.js
1 /*
2 Copyright (c) 2003-2011, 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 });