driver.js / src /common /utils.js
kamrify's picture
Allow step element to be a HTMLElement
e492ddc
raw
history blame
1.67 kB
/**
* Turn a string into a node
* @param {String} htmlString to convert
* @return {Node} Converted node element
*/
// eslint-disable-next-line
export const createNodeFromString = (htmlString) => {
const div = document.createElement('div');
div.innerHTML = htmlString.trim();
// Change this to div.childNodes to support multiple top-level nodes
return div.firstChild;
};
/**
* Gets the CSS property from the given element
* @param {HTMLElement|Node} element
* @param {string} propertyName
* @param {boolean} prefixVendor
* @return {string}
*/
export const getStyleProperty = (element, propertyName, prefixVendor = false) => {
if (prefixVendor) {
const prefixes = ['', '-webkit-', '-ms-', 'moz-', '-o-'];
for (let counter = 0; counter < prefixes.length; counter++) {
const prefixedProperty = prefixes[counter] + propertyName;
const foundValue = getStyleProperty(element, prefixedProperty);
if (foundValue) {
return foundValue;
}
}
return '';
}
let propertyValue = '';
if (element.currentStyle) {
propertyValue = element.currentStyle[propertyName];
} else if (document.defaultView && document.defaultView.getComputedStyle) {
propertyValue = document.defaultView
.getComputedStyle(element, null)
.getPropertyValue(propertyName);
}
return propertyValue && propertyValue.toLowerCase ? propertyValue.toLowerCase() : propertyValue;
};
/**
* Checks if the passed element is dom object or not
* @param element
* @returns {boolean}
*/
export const isDomElement = function (element) {
return element && typeof element === 'object' && 'nodeType' in element;
};