У нас есть куча форм на нашем интранете кодируемых IE9, которые содержат код, подобный этому:JavaScript Прототип недвижимости Зеркало Другой недвижимости
var dept = req.responseXML.selectNodes("//Dept")[0].text;
Мы просто модернизированный всех наших ПК на IE10 и SelectNodes в настоящее время устарели и был заменен querySelectorAll, поэтому исправленный бит кода будет:
var dept = req.responseXML.querySelectorAll("Dept")[0].textContent;
Все эти формы используют общий файл JS для отправки запросов так, я думал, что если я мог бы определить некоторые функции прототипа/свойства я мог бы это исправить несовместимость, не касаясь каждой формы , Я сделал некоторый прогресс и был в состоянии сопоставить SelectNodes с querySelectorAll помощью:
Document.prototype.selectNodes = function(param) {
return this.querySelectorAll(param.replace("//", ""));
}
Однако сейчас я бегу в проблемы отображения текста в TextContent. Далее, кажется, не работает:
Element.prototype.text = function() {
return this.textContent;
};
Если у кого есть какие-либо adivce я бы очень признателен, я действительно не хочу, чтобы отслеживать все эти формы вниз. Благодаря!
Это было решение! Ваши советы верны, однако моя среда требует, чтобы старый IE9-код все еще функционировал в IE10. –
@ JaredFeldman - лучший способ справиться с совместимостью для старых браузеров - это изменить свой код, чтобы использовать новый интерфейс (для работы в новых браузерах), а затем добавить полиполк для старых браузеров. Это сохраняет стандарт вашего кода, предотвращает конфликты в будущем, потому что вы используете только стандартные свойства в своем коде и заставляете ваш код намного легче понять для тех, кто придет после вас в будущем (потому что он использует известные стандарты). Вы делаете обратное - кодирование старого проприетарного интерфейса и попытка сделать новый браузер все еще реализуемым. – jfriend00