使用Javascript基于浏览器创建Xml文档

使用Javascript基于浏览器创建Xml文档,javascript,xml,google-chrome,internet-explorer,legacy,Javascript,Xml,Google Chrome,Internet Explorer,Legacy,我正在尝试让一个旧的应用程序在Chrome和Edge中工作。它目前仅在兼容模式下工作。我已经将范围缩小到获取浏览器类型的位置,然后根据浏览器类型创建xml文档 // Identify and return the browser type function getBrowserType() { try { if (typeof ActiveXObject != 'undefined') {

我正在尝试让一个旧的应用程序在Chrome和Edge中工作。它目前仅在兼容模式下工作。我已经将范围缩小到获取浏览器类型的位置,然后根据浏览器类型创建xml文档

    // Identify and return the browser type
    function getBrowserType()
    {
        try
        {
            if (typeof ActiveXObject != 'undefined')
            {
                //Microsoft Internet Explorer
                return 'MSIE';   
            }
            else if (typeof document != 'undefined'
                && document.implementation
                && document.implementation.createDocument
                && typeof DOMParser != 'undefined')
            {
                //Other browsers
                return 'OTH';    
            }
        }
        catch(ex)
        {
            alert('Unable to find browser type.\n' + ex.message);
        }
    }
//create the xml DOM by browser detection

    function createDoc(browserType)
{
     var xmlDOM = null;
        if (browserType == 'MSIE')
        {
            try 
            {
                var names = [   'Msxml2.DOMDocument.6.0',
                                'Msxml2.DOMDocument.3.0',
                                'MSXML2.DOMDocument',
                                'MSXML.DOMDocument',
                                'Microsoft.XMLDOM'      ];
                for (var key in names)
                {
                    try
                    {
                        xmlDOM = new ActiveXObject(names[key]);
                    }
                    catch(ex)
                    {}
                }
            }
            catch(ex)
            {
                alert('Unable to create XML Document.\n' + ex.message);
            }
        }
        else if (browserType == 'OTH')
        {
            try
            {
                xmlDOM = document.implementation.createDocument("", "", null);
            }
            catch(ex)
            {
                alert('Unable to create XML Document.\n' + ex.message);
            }
        }


        return xmlDOM;
    }

因此,创建的对象不正确,它不会创建xml文档。如果创建的对象是ActiveXObject,则在兼容模式下,它没有问题。所以这是基于浏览器的。所以我基本上需要一种在所有浏览器中工作的方法。我认为可能有更好的方法来实现这一点,因为这是非常古老的2009代码

我已经在我这边测试了你的代码,似乎我检测不到IE浏览器(我使用的是IE 11)

我建议您可以尝试使用window.navigator.userAgent属性检测浏览器。代码如下:

  if (window.navigator.userAgent.toLowerCase().indexOf("trident") > -1) {
     //Microsoft Internet Explorer
     return "IE";
  }
因为,浏览器代理字符串如下所示:

  if (window.navigator.userAgent.toLowerCase().indexOf("trident") > -1) {
     //Microsoft Internet Explorer
     return "IE";
  }

[注意]浏览器所有者可以更改导航器数据,如果未修改userAgent,用户可以使用上述方法使用JavaScript检测浏览器


然后,您可以参考创建XML DOM。

您可以使用以下库“”
document.implementation.createDocument(“,”,null)
应该返回正确的XML文档。我不认为这部分本身就是真正的罪魁祸首。更重要的是,他们以后对这个对象所做的事情可能会引起问题