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

标签 javascript xml google-chrome internet-explorer legacy

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

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

enter image description here

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

那你可以引用this article创建 XML DOM。

关于javascript - 使用Javascript创建基于浏览器的Xml文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57279773/

相关文章:

javascript - 计时器如何在 Javascript 中工作?

javascript - 动态创建的 HTML id,比较时如何使用 eval?

android - 在 XML 中设置选项卡指示器

C# 将 XML 作为参数传递给 XSLT

google-chrome - php get_browser 现在将 Opera 读取为 Google Chrome?

javascript - 哪种外部环境可能导致接头不执行任何操作?

javascript - 如何通过单击文本显示文件浏览器并在悬停文本时将鼠标光标更改为指针

javascript - 在 Angular js 中使用 ng-repeat 指令在表中显示数组数据

xml - 用该元素的多个副本替换 XML 元素

google-chrome - chrome/safari (webkit) 松散的指针交互边界半径