code: function keepNoScriptContents() {
          if (getDocumentMode() < 9) {
            parser.addNodeFilter('noscript', function (nodes) {
              var i = nodes.length, node, textNode;
  
              while (i--) {
                node = nodes[i];
                textNode = node.firstChild;
  
                if (textNode) {
                  node.attr('data-mce-innertext', textNode.value);
                }
              }
            });
  
            serializer.addNodeFilter('noscript', function (nodes) {
              var i = nodes.length, node, textNode, value;
  
              while (i--) {
                node = nodes[i];
                textNode = nodes[i].firstChild;
  
                if (textNode) {
                  textNode.value = Entities.decode(textNode.value);
                } else {
                  // Old IE can't retain noscript value so an attribute is used to store it
                  value = node.attributes.map['data-mce-innertext'];
                  if (value) {
                    node.attr('data-mce-innertext', null);
                    textNode = new Node('#text', 3);
                    textNode.value = value;
                    textNode.raw = true;
                    node.append(textNode);
                  }
                }
              }
            });
          }
        }
docs: Old IE versions can't retain contents within noscript elements so this logic will store the contents
  as a attribute and the insert that value as it's raw text when the DOM is serialized.