Я унаследовал несколько лет JS-код, который имел проблемы с совместимостью с браузером.У меня довольно ограниченный опыт работы с javascript, поэтому я не смог определить проблему.
В частности, это получение информации из установки SharePoint 2013.Он использует soap api для вызова списка в sharepoint, получения некоторых элементов из него в формате XML, а затем добавления этой информации на страницу.Код отлично работает в IE и Edge, но, похоже, не работает в Chrome или Firefox.
Я провел тестирование, и браузеры, похоже, вводят правильную часть определения браузера if
Я немного уменьшил исходный код, удалив операторы добавления и заменив их на простой alert.length ().Имея это в виду, кажется, что код возвращает данные в IE / Edge (длина> = 1), но в Chrome / FireFox он ничего не возвращает (длина равна 0).
Любая идея, что моя проблема можетбыть здесь?
var WebAlerts = {} || WebAlerts;
WebAlerts.getWebAlerts = function () {
var soapEnv = '<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">\
<soap12:Body>\
<GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">\
<listName>Web Alerts</listName>\
<query><Query>
<Where><And>
<Eq><FieldRef Name="Important" /><Value Type="String">1</Value></Eq>
<Geq><FieldRef Name="Expires" /><Value Type="DateTime"><Today /></Value></Geq>
</And></Where>
</Query></query>\
<viewFields><ViewFields><FieldRef Name="Body" /></ViewFields></viewFields>\
</GetListItems>\
</soap12:Body>\
</soap12:Envelope>';
var xml = $.ajax({ url: "//domain.com/_vti_bin/lists.asmx",
type: "POST", dataType: "xml", data: soapEnv,
error: WebAlerts.printError,
complete: WebAlerts.processResults,
contentType: "text/xml; charset=\"utf-8\"",
});
}
WebAlerts.processResults = function (xData, status) {
var xmlalerts;
if (browseris.ie)
{
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
xmldoc.loadXML(xData.responseText);
xmlalerts = $(xmldoc).find("z\\:row");
}
else
{
xmlalerts = $(xData.responseXML).find("row");
}
alert(xmlalerts.length);
}