// Copyright 2010 The Closure Library Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS-IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /** * @fileoverview Browser capability checks for the dom package. * */ goog.provide('goog.dom.BrowserFeature'); goog.require('goog.userAgent'); /** * Enum of browser capabilities. * @enum {boolean} */ goog.dom.BrowserFeature = { /** * Whether attributes 'name' and 'type' can be added to an element after it's * created. False in Internet Explorer prior to version 9. */ CAN_ADD_NAME_OR_TYPE_ATTRIBUTES: !goog.userAgent.IE || goog.userAgent.isDocumentModeOrHigher(9), /** * Whether we can use element.children to access an element's Element * children. Available since Gecko 1.9.1, IE 9. (IE<9 also includes comment * nodes in the collection.) */ CAN_USE_CHILDREN_ATTRIBUTE: !goog.userAgent.GECKO && !goog.userAgent.IE || goog.userAgent.IE && goog.userAgent.isDocumentModeOrHigher(9) || goog.userAgent.GECKO && goog.userAgent.isVersionOrHigher('1.9.1'), /** * Opera, Safari 3, and Internet Explorer 9 all support innerText but they * include text nodes in script and style tags. Not document-mode-dependent. */ CAN_USE_INNER_TEXT: (goog.userAgent.IE && !goog.userAgent.isVersionOrHigher('9')), /** * MSIE, Opera, and Safari>=4 support element.parentElement to access an * element's parent if it is an Element. */ CAN_USE_PARENT_ELEMENT_PROPERTY: goog.userAgent.IE || goog.userAgent.OPERA || goog.userAgent.WEBKIT, /** * Whether NoScope elements need a scoped element written before them in * innerHTML. * MSDN: http://msdn.microsoft.com/en-us/library/ms533897(VS.85).aspx#1 */ INNER_HTML_NEEDS_SCOPED_ELEMENT: goog.userAgent.IE, /** * Whether we use legacy IE range API. */ LEGACY_IE_RANGES: goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9) };