Примечание переводчика: Я серверный Java-программист, но исторически работаю исключительно под Windows. Все в команде в основном работают на Mac или Linux, но кто-то должен тестировать веб-интерфейсы проектов, работающих под реальным IE, кто еще, как не я? Так что использую его уже довольно много лет, как по работе, так и по лени, как основной браузер.
На мой взгляд, с каждой новой версией, начиная с девятой, она становится все более достойной, и Project Spartan обещает быть превосходной.
По крайней мере в технологическом плане - на равных с другими.
Предлагаю вашему вниманию перевод статьи из блога разработчиков, дающий некоторые основания на это надеяться.
Обеспечение совместимости с DOM L3 XPath
Чтобы обеспечить по-настоящему совместимую и современную работу в Интернете в Windows 10, мы постоянно работаем над улучшением поддержки стандартов, особенно для DOM L3 XPath .
Сегодня мы хотели бы рассказать вам, как мы этого добились в Project Spartan.
Немного истории
Прежде чем реализовать поддержку стандарта L3 Core DOM и собственных XML-документов в IE9, мы предоставили веб-разработчикам библиотеку MSXML через механизм ActiveX. Помимо объекта XMLHttpRequest, MSXML также обеспечивает частичную поддержку языка запросов XPath посредством набора собственных API-интерфейсов selectSingleNode и selectNodes. С точки зрения приложений, использующих MSXML, этот метод просто работал.Однако он совершенно не соответствовал стандартам W3C ни для взаимодействия XML, ни для XPath. Авторам библиотек и разработчикам веб-сайтов приходилось заключать вызовы XPath для переключения между реализациями на лету.
Если вы ищете в Интернете учебные пособия или примеры XPath, вы сразу заметите оболочки для IE и MSXML, например.
Для нашего нового движка, ориентированного на Интернет без плагинов, нам нужно было обеспечить встроенную поддержку XPath.// code for IE if (window.ActiveXObject || xhttp.responseType == "msxml-document") { xml.setProperty("SelectionLanguage", "XPath"); nodes = xml.selectNodes(path); for (i = 0; i < nodes.length; i++) { document.write(nodes[i].
childNodes[0].
nodeValue); document.write("<br>"); } } // code for Chrome, Firefox, Opera, etc. else if (document.implementation && document.implementation.createDocument) { var nodes = xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null); var result = nodes.iterateNext(); while (result) { document.write(result.childNodes[0].
nodeValue); document.write("<br>"); result = nodes.iterateNext(); } }
Оценка возможных вариантов
Мы сразу начали оценивать возможные варианты реализации такой поддержки.Можно было бы написать его с нуля, или полностью интегрировать в MSXML браузер, или портировать Система.
XML из .
NET, но все это заняло бы слишком много времени.
Поэтому мы решили начать с реализации поддержки некоторого базового подмножества XPath, подумывая при этом о полном.
Чтобы определить, за какое начальное подмножество стандарта стоит взяться, мы использовали внутренний инструмент, собирающий статистику по запросам на сотнях тысяч наиболее популярных сайтов.
Оказалось, что наиболее распространенными типами запросов являются:
- //элемент1/элемент2/элемент3
- //элемент[@attribute="значение"]
- .
//*[contains(concat(" ", @class, " "), "имя класса")]
- элемент1 > элемент2 > элемент3
- элемент[атрибут="значение"]
- *.
имякласса
Сделав это, мы снова воспользовались нашей телеметрией, чтобы измерить процент успешных запросов, а также выяснить, какие из неуспешных встречались чаще всего.
Оказалось, что такая реализация покрывает целых 94% запросов и позволяет многим сайтам сразу зарабатывать.
Из неудачных большинство оказались видами
- //элемент[содержит(@класс, «имякласса»)]
- //element[contains(concat(" ",normalize-space(@class), " "), " className ")]
Добавив это правило, мы улучшили поддержку 97% сайтов, а это значит, что новый движок практически готов к работе в современном Интернете.
Результат запуска телеметрии с помощью запросов XPath
Обеспечение поддержки оставшихся 3% сайтов
Поддержка подавляющего большинства запросов XPath путем простого преобразования их в селекторы CSS — это здорово, но этого все равно недостаточно, потому что остальные реализовать аналогичным образом не получится.Грамматика XPath включает в себя такие сложные вещи, как функции, запросы к элементам, не относящимся к DOM, узлам документов и сложным предикатам.
Некоторые авторитетные сайты (в том числе МДН ) предлагают в таких случаях использовать библиотеки полифилов на платформах, которые не имеют адекватной встроенной поддержки XPath. Например, злой-добрый-xpath (WGX), написанный на чистом JS. Мы протестировали его в нашем внутреннем наборе тестов для спецификации XPath, и по сравнению с собственными реализациями он показал совместимость на 91%, а также очень приличную производительность.
Так что идея использования WGX для оставшихся 3% сайтов показалась нам очень привлекательной.
Более того, это проект с открытым исходным кодом под лицензией MIT, что идеально соответствует нашему стремлению внести больший вклад в развитие открытого исходного кода.
Но мы никогда не использовали полифил JavaScript внутри IE для поддержки какого-либо веб-стандарта.
Чтобы WGX мог работать, не разрушая контекст документа, мы запускаем его в отдельном, изолированном экземпляре JS-движка, передавая ему на вход запрос и необходимые данные со страницы, а на выходе принимая готовый результат. Изменив код WGX для работы в этом режиме разделения документов, мы сразу же улучшили отображение контента на многих сайтах в нашем новом браузере.
Сайты до использования WGX
И это после.
Обратите внимание на цены и количество выигрышных билетов, которые появляются.
Однако в WGX тоже были ошибки, из-за которых он ведёт себя не так, как в спецификации W3C, так и в других браузерах.
Мы планируем сначала исправить их все, а затем поделиться патчами с сообществом.
Таким образом, в результате некоторого интеллектуального анализа данных в Интернете и с помощью библиотеки с открытым исходным кодом наш новый движок за короткое время приобрел продуктивную поддержку XPath, а пользователи вскоре получат лучшую поддержку веб-стандартов.
Вы можете скачать следующий Техническая предварительная версия Windows 10 , и убедитесь сами.
Вы также можете написать через Пользовательский голос , насколько хорошо мы это сделали, или твитнуть нам, или выскажись в комментариях к оригинальной статье .
PS от переводчика: Тенденция превращения JavaScript в язык, на котором пишутся платформы, что называется, очевидна.
Возьмите Firefox Shumway или PDF.js. Сейчас Microsoft переводит свой браузер, по крайней мере частично, на JS. Теги: #xpath #Project Spartan #microsoft #веб-стандарты #веб-стандарты #Wicked Good XPath #IE #техническая предварительная версия Windows 10 #windows 10 #DOM L3 #разработка веб-сайтов #открытый исходный код #JavaScript #Internet Explorer #xml
-
Хостинг Ipage Против Хостинга Fatcow
19 Oct, 24 -
Выпуск Элементарной Ос "Луна"
19 Oct, 24 -
Стакснет: Война 2.0
19 Oct, 24 -
Дартс Своими Руками
19 Oct, 24