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

Create Xml document based on the browser using Javascript

我正在尝试让旧版应用程序在 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";
  }

因为,浏览器代理字符串如下:

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

然后可以参考this article创建XMLDOM.