code: function _appendNode(parent, child) {
    var parentName = _getHTMLNodeName(parent);
  
    var childName = _getHTMLNodeName(child);
  
    if (doc.createStyleSheet) {
      if (parentName === 'script') {
        parent.text = child.nodeValue;
        return;
      }
  
      if (parentName === 'style') {
        parent.cssText = child.nodeValue; // This will not apply it--just make it available within the DOM cotents
  
        return;
      }
    }
  
    if (parentName === 'template') {
      parent.content.appendChild(child);
      return;
    }
  
    try {
      parent.appendChild(child); // IE9 is now ok with this
    } catch (e) {
      if (parentName === 'select' && childName === 'option') {
        try {
          // Since this is now DOM Level 4 standard behavior (and what IE7+ can handle), we try it first
          parent.add(child);
        } catch (err) {
          // DOM Level 2 did require a second argument, so we try it too just in case the user is using an older version of Firefox, etc.
          parent.add(child, null); // IE7 has a problem with this, but IE8+ is ok
        }
  
        return;
      }
  
      throw e;
    }
  }
docs: Need this function for IE since options weren't otherwise getting added
  @private
  @static
  @param {DOMElement} parent The parent to which to append the element
  @param {DOMNode} child The element or other node to append to the parent