Совместимость с DOM / AJAX API, основанным на jQuery, построенным на основе оригинального ECMA / W3C polyfill и включающим в себя множество распространённых расширений jQuery API.
В API iQuery стремится к совместимости с jQuery, в то же время его внутренняя реализация использует стратегию «ориентации на будущее и обратной совместимости» Polyfill — jQuery Standard API (2500 строк), iQuery Extension API (1800 строк) основаны на лучших API W3C, ECMA в последних стандартах, устаревший код совместимости браузера (частично основанный на API jQuery, 1200+ строк) упакован в ту же форму, что и новый API (расширение прототипа), и выделен в отдельный внешний модуль. Это не только позволяет повторно использовать API jQuery для эффективной реализации, но и упрощает разработку разработчиками, которые могут самостоятельно обрезать код.
【Примечание】 Совместимость с IE ограничена его «стандартным режимом», а не «режимом совместимости».
iQuery | jQuery | Zepto | JSLite | |
---|---|---|---|---|
Совместимость с браузером | IE 8+ | IE 6+ (v1.x)、IE 9+ (v2.0+) | IE 10+ | IE 10+ |
ECMA / W3C полифилл | Много | ×(каждый модуль реализует Fix) | Мало | Мало |
Расширения API | Много | Мало | Мало | |
События касания | Одно касание | × | Много касаний | × |
Модульность исходного кода | AMD | AMD | IIFE | IIFE |
Комментарии к API (JSDoc) | √ | × | × | × |
Тестовый фреймворк | Mocha | QUnit | Evidence | Mocha |
Базовые знания — документация jQuery API.
Базовая структура исходного кода HTML.
<!DocType HTML>
<html><head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge, Chrome=1" />
<!-- 1. Независимое использование -->
<script src="path/to/iQuery.min.js"></script>
<!-- 2. Загрузка в соответствии со стандартом AMD -->
<script src="https://cdn.bootcss.com/require.js/2.3.5/require.min.js"></script>
<script>
require.config({
paths: {
iQuery: 'path/to/iQuery.min.js'
}
});
</script>
</head><body>
...
</body></html>
Следующие расширения включены в проект jQueryKit.js (/master/jQueryKit.js), что удобно для интеграции с другими реализациями API jQuery —
Документация по API и другие изменения:
Все типы DOM-информаторов (.attr()
, .prop()
, .css()
, .data()
) поддерживают функцию «возвращать всю информацию при отсутствии ключа».
$.fn.reduce() — новый метод объединения данных DOM.
При получении значения через .css(), числовые и пиксельные значения возвращаются в виде чисел. По умолчанию все присвоения через .css() имеют высокий приоритет, чтобы обеспечить эффективность присвоения.
$.fn.show() совместим с элементами, у которых нет собственного display, что позволяет избежать проблем со сложными макетами.
Новый метод интеграции z-индекса элементов: $.fn.zIndex(), который включает функции получения фактического значения, присвоения значения и перемещения элемента на передний или задний план.
Новая функция расчёта приоритета селектора: $.selectorPriority().
Новая функция получения имён CSS: $.cssName().
Новая функция поиска объектов CSS: $.searchCSS().
Встроенная функция установки уникального идентификатора для DOM: $.uniqueId().
Новый метод чтения и записи выделенного содержимого: $.fn.selection().
$.fn.focus() делает все видимые элементы сфокусированными.
Объект наблюдателя: $.Observer().
Интерфейс событийного расширения: $.customEvent(), на основе которого реализованы патчи для стандартных событий ввода.
Обёрнуты события жестов сенсорного экрана (tap, press, swipe), обеспечивая согласованный опыт работы как на настольных, так и на мобильных устройствах.
Метод обработки событий простоя пользователя: $.fn.onIdleFor().
Метод межстраничных сообщений: $.fn.onReply(), основанный на window.postMessage().
Функция анимации: $.fn.animate(), поддерживает эффекты анимации, аналогичные jQuery UI $.fn.effect().
Переключение классов анимации: $.fn.toggleAnimate().
Преобразование текста в двоичный объект: $.toBlob().
Хэширование данных: $.dataHash(), по умолчанию используется алгоритм CRC-32, также поддерживается современный Crypto API браузеров.
Не реализованные функции jQuery (последняя версия):
— Нет $.noConflict(), но jQuery не монополизирует переменные. — Не поддерживаются встроенные типы браузеров и соответствующие методы $.isXXX(). — Не поддерживается проверка характеристик браузера. — Неподдерживаемые пользовательские опции $.ajax(). — Нет поддержки $.Deferred(). — Поддерживаются только часто используемые псевдоклассы jQuery. — Нет поддержки XPath и операций с XML. — Некоторые редко используемые статические и экземплярные методы jQuery не поддерживаются. — Внешнее управление очередью анимации не поддерживается.
Патчи для стандартов ECMA и W3C:
— Встроенный метод Number.isInteger() для определения целых чисел. — Встроенный Number.isSafeInteger() для проверки безопасных целых чисел. — Встроенная поддержка метода trim() для строк, который удаляет пробелы. — Встроенные методы String.prototype.repeat, String.prototype.padStart и String.prototype.padEnd. — Встроенный Array.from() для создания массивов из других структур данных. — Методы Array.prototype.indexOf() и Array.prototype.reduce(). — Метод Function.prototype.name для получения имени функции. — Методы Object.keys(), Object.getPrototypeOf() и Object.create(). — Date.now() для получения текущего времени. — Promise() для работы с обещаниями. — Переопределён Error.prototype.valueOf(), чтобы IE 10- возвращал доступный код ошибки. — Новый объект HTMLHttpRequest для JSONP Get и iframe Post. — Свойство HTMLDocument.prototype.currentScript. — Свойство HTMLDocument.prototype.scrollingElement. — Экземплярные методы ChildNode remove() и replaceWith(). — Атрибут Element.prototype.textContent. — Патч для IE 8 для Element.prototype.innerHTML. — Объект HTMLCollection для исправления ошибки в IE 10-. — Свойства Element firstElementChild, lastElementChild, previousElementSibling и nextElementSibling. — Метод Element.matches для соответствия стандартам. — DOMTokenList для поддержки classList и relList в различных браузерах. — DOMStringMap для поддержки dataset в IE 11-. — Свойство HTMLSelectElement.selectedOptions для IE. — Свойства location.origin и HTMLAnchorElement.origin для IE 11-. — Исправление обработки JavaScript-ключевых слов в IE 8. — CSSStyleDeclaration для поддержки getComputedStyle в IE 8 и преобразования свойств M$ DirectX. — Mozilla Firefox и Google Chrome для Window.getMatchedCSSRules(). — FormData() для упаковки данных формы в IE 10-. — Создание документов с помощью DOMImplementation() в IE 8. — Разбор документов с помощью DOMParser() в IE 8+. — URL() и URLSearchParams() для работы с URL.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )