public class Browser { /// <summary> /// During static instantiation, only the Netscape flag is checked /// /// </summary> /// static Browser() { _isNavigator = HtmlPage.BrowserInformation.Name.Contains("Netscape"); } /// <summary> /// Flag indicating Navigator/Firefox/Safari or Internet Explorer /// </summary> private static bool _isNavigator; /// <summary> /// Provides quick access to the window.screen ScriptObject /// </summary> /// private static ScriptObject Screen { get { ScriptObject screen = (ScriptObject)HtmlPage.Window.GetProperty("screen"); if (screen == null) { throw new InvalidOperationException(); } return screen; } } /// <summary> /// Gets the window object's client width /// </summary> public static double ClientWidth { get { return _isNavigator ? (double)HtmlPage.Window.GetProperty("innerWidth") : (double)HtmlPage.Document.Body.GetProperty("clientWidth"); } } /// <summary> /// Gets the window object's client height /// </summary> public static double ClientHeight { get { return _isNavigator ? (double)HtmlPage.Window.GetProperty("innerHeight") : (double)HtmlPage.Document.Body.GetProperty("clientHeight"); } } /// <summary> /// Gets the current horizontal scrolling offset /// </summary> /// /// public static double ScrollLeft { get { return _isNavigator ? (double)HtmlPage.Window.GetProperty("pageXOffset") : (double)HtmlPage.Document.Body.GetProperty("scrollLeft"); } } /// <summary> /// Gets the current vertical scrolling offset /// </summary> /// public static double ScrollTop { get { return _isNavigator ? (double)HtmlPage.Window.GetProperty("pageYOffset") : (double)HtmlPage.Document.Body.GetProperty("scrollHeight"); } } /// <summary> /// Gets the width of the entire display /// </summary> public static double ScreenWidth { get { return (double)Screen.GetProperty("width"); } } /// <summary> /// Gets the height of the entire display /// </summary> public static double ScreenHeight { get { return (double)Screen.GetProperty("height"); } } /// <summary> /// Gets the width of the available screen real estate, excluding the dock /// or task bar /// </summary> /// /// public static double AvailableScreenWidth { get { return (double)Screen.GetProperty("availWidth"); } } /// <summary> /// Gets the height of the available screen real estate, excluding the dock /// or task bar /// </summary> /// /// public static double AvailableScreenHeight { get { return (double)Screen.GetProperty("availHeight"); } } /// <summary> /// Gets the absolute left pixel position of the window in display coordinates /// </summary> public static double ScreenPositionLeft { get { return _isNavigator ? (double)HtmlPage.Window.GetProperty("screenX") : (double)HtmlPage.Window.GetProperty("screenLeft"); } } /// <summary> /// Gets the absolute top pixel position of the window in display coordinates /// </summary> public static double ScreenPositionTop { get { return _isNavigator ? (double)HtmlPage.Window.GetProperty("screenY") : (double)HtmlPage.Window.GetProperty("screenTop"); } } }