Below table depicts the common code changes that are required for FF compatibility in comparison with IE
| IE Supported Code | FF Supported Code |
| Width, height gets inherited even if not specified | Need to specify width and Height otherwise doesn’t get inherited |
| Custom Properties can be directly accessed eg : .folderId | Custom Properties can be accessed only by getAttribute("property name') eg: getAttribute('folderid') |
| .InnerText works in IE | Instead use .textContent |
| event.srcElement supported by IE only | event.target in FF also need to pass ‘event’ attribute explicitly eg: onclick="methodName(event);" - |
| SelectNodes() works in IE SelectNodes() for paths starting with "\\pathName" | The following code needs to be used for SelectNodes() var xmlNodesFF = dom.getElementsByTagName(xPath);
for (var n = 0; n < xmlNodesFF.length; n++) { var getXmlAttributes = dom.getElementsByTagName(xPath)[n].attributes; var selectXmlAttribute = getXmlAttributes.getNamedItem(attributeName).value; if (selectXmlAttribute == idValue) { selectNodesObj[i] = dom.getElementsByTagName(xPath)[n]; i = i + 1; } else if (idValue == " " && attributeName == " ")// get all values { selectNodesObj[i] = dom.getElementsByTagName(xPath)[n]; i = i + 1; } var i = 0; var isMatch; var xmlNodesFF = dom.getElementsByTagName(xPath); for (var n = 0; n < xmlNodesFF.length; n++) { var getXmlAttributes = dom.getElementsByTagName(xPath)[n].attributes; for (var cnt = 0; cnt < idValues.length; cnt++) { isMatch = false; var selectXmlAttribute = getXmlAttributes.getNamedItem(attributeNames[cnt]).value; if (selectXmlAttribute == idValues[cnt]) { isMatch = true; } if (isMatch == false) { break; } } if (isMatch == true) { selectNodesObj[i] = dom.getElementsByTagName(xPath)[n]; i = i + 1; } |
| Creating XML DOM object in IE is xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); | Creating XML DOM object in FF is xmlDoc = document.implementation.createDocument("","doc",null); |
| to getattribute in IE xmlNode.getAttribute("Attribute Name"); | In FF xmlNode.attributes["Attribute Name"].value; |
| .xml attributes is defined in IE | Need to use (new XMLSerializer()).serializeToString(xmlObject); to get the xml string |
| Setting Attribute : Node.setAttribute(attributeName) = value; | Setting Attribute : Node.setAttribute(attributeName, attributeValue); |
| .Text works in IE | use .textContent to set and get text values |
| Width and height rendering differs in IE and FF because of the size | Width n height rendering differs in IE and FF because of the size |
| NodeTypeString exists in IE not in FF | NodeTypeString undefined in FF use nodeType as it works for both IE and FF(nodeType = 1 defines ‘element’) |
| To loadXML from xml string as input , IE uses LoadXML(xmlstring) | FF uses var parser = new DOMParser() |