123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /**
- * 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.
- *
- * @providesModule getStyleProperty
- * @typechecks
- */
- const camelize = require("./camelize");
- const hyphenate = require("./hyphenate");
- function asString(value)
- /*?string*/
- {
- return value == null ? value : String(value);
- }
- function getStyleProperty(
- /*DOMNode*/
- node,
- /*string*/
- name)
- /*?string*/
- {
- let computedStyle; // 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;
|