使用Javascript基于浏览器创建Xml文档
我正在尝试让一个旧的应用程序在Chrome和Edge中工作。它目前仅在兼容模式下工作。我已经将范围缩小到获取浏览器类型的位置,然后根据浏览器类型创建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') {
// 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文档。我不认为这部分本身就是真正的罪魁祸首。更重要的是,他们以后对这个对象所做的事情可能会引起问题