123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 'use strict';
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @typechecks
- */
- var camelize = require('./camelize');
- var hyphenate = require('./hyphenate');
- function asString(value) /*?string*/{
- return value == null ? value : String(value);
- }
- function getStyleProperty( /*DOMNode*/node, /*string*/name) /*?string*/{
- var computedStyle = void 0;
- // W3C Standard
- if (window.getComputedStyle) {
- // In certain cases such as within an iframe in FF3, this returns null.
- computedStyle = window.getComputedStyle(node, null);
- if (computedStyle) {
- return asString(computedStyle.getPropertyValue(hyphenate(name)));
- }
- }
- // Safari
- if (document.defaultView && document.defaultView.getComputedStyle) {
- computedStyle = document.defaultView.getComputedStyle(node, null);
- // A Safari bug causes this to return null for `display: none` elements.
- if (computedStyle) {
- return asString(computedStyle.getPropertyValue(hyphenate(name)));
- }
- if (name === 'display') {
- return 'none';
- }
- }
- // Internet Explorer
- if (node.currentStyle) {
- if (name === 'float') {
- return asString(node.currentStyle.cssFloat || node.currentStyle.styleFloat);
- }
- return asString(node.currentStyle[camelize(name)]);
- }
- return asString(node.style && node.style[camelize(name)]);
- }
- module.exports = getStyleProperty;
|