-
Notifications
You must be signed in to change notification settings - Fork 93
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
12 changed files
with
88 additions
and
104 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,62 +1,51 @@ | ||
Canvas APNG | ||
APNG-canvas | ||
============== | ||
|
||
Библиотека для отображения Animated PNG в браузерах, которые поддерживают canvas | ||
(т. е. в Google Chrome, Internet Explorer 9, Apple Safari). | ||
Библиотека для отображения Animated PNG в браузерах, которые поддерживают canvas (т. е. в Google Chrome, Internet Explorer 9, Apple Safari). | ||
|
||
API | ||
----------- | ||
|
||
Бибилиотека создаёт глобальный объект **APNG**, имеющий несколько методов. | ||
Все методы работают асинхронно и возвращают *promise*-объекты. Если на странице присутствует jQuery, | ||
то используются его [promises](http://api.jquery.com/category/deferred-object/), в противном случае | ||
используется совместимый интерфейс, поддерживающий методы `done`, `fail`, `then` и `always`. | ||
Бибилиотека создаёт глобальный объект **APNG**, имеющий несколько методов. Все методы работают асинхронно и принимают необязательный callback-аргумент. Методы должны вызываться после загрузки DOM-дерева. | ||
|
||
### APNG.checkFeatures() | ||
Для тех, кому удобнее deferred-вызовы, методы возвращают *promise*-объекты. Если на странице присутствует jQuery, то используются его [promises](http://api.jquery.com/category/deferred-object/), в противном случае используется совместимый интерфейс, поддерживающий методы `done`, `fail`, `then` и `always`. В случае успешного выполнения метода, вызывается `callback` и обработчики `done` (с одинаковыми параметрами), в случае ошибки вызываются обработчики `fail` с сообщением об ошибке. | ||
|
||
Проверяет, поддерживает ли браузер `APNG` и `canvas`. Может вызываться независимо от прочих методов. | ||
### APNG.checkNativeFeatures(callback?) | ||
|
||
**`done`** Аргумент — объект с двумя булевыми полями: `apng` и `canvas`. True в любом поле означает поддержку | ||
браузером соответствующей технологии. | ||
Проверяет, поддерживает ли браузер `APNG` и `canvas`. Может вызываться независимо от прочих методов. В `callback` передаётся объект с двумя булевыми полями: `apng` и `canvas`. True в любом поле означает поддержку браузером соответствующей технологии. | ||
|
||
**`fail`** Не вызывается. | ||
### APNG.ready(callback?) | ||
|
||
### APNG.init() | ||
Подготовка библиотеки к работе. Должен быть вызван хотя бы один раз перед вызовом остальных методов (кроме `checkNativeFeatures`). | ||
|
||
Подготовка библиотеки к работе. Должен вызываться один раз, остальные методы должны вызываться | ||
из обработчика `done`. | ||
`callback` вызывается без аргументов, и только в том случае, если браузер поддерживает `canvas` и не поддерживает `APNG`. Только в этом случае имеет смысл применение этой библиотеки. | ||
|
||
**`done`** Вызывается без аргументов только в том случае, если браузер поддерживает `canvas` | ||
и не поддерживает `APNG`. Только в этом случае имеет смысл применение этой библиотеки. | ||
|
||
**`fail`** Вызывается если браузер поддерживает `APNG` или не поддерживает `canvas`. Аргумент — | ||
результат вызова `APNG.checkFeatures`. | ||
|
||
### APNG.createAPNGCanvas(url) | ||
### APNG.createAPNGCanvas(url, callback?) | ||
|
||
Загружает PNG-файл по данному `url`, разбирает его, создаёт элемент `canvas` и запускает анимацию. | ||
|
||
**`done`** Аргумент — созданный элемент `canvas`, в котором проигрывается анимация. | ||
Элемент не включён в DOM-дерево, это нужно сделать вручную. | ||
|
||
**`fail`** Вызывается если полученные данные не являются корректным PNG-файлом или если произошла | ||
ошибка при разборе данных. Аргумент — строка сообщения об ошибке. | ||
`callback` вызывается только если полученные данные являются корректным PNG-файлом. Аргумент — созданный элемент `canvas`, в котором проигрывается анимация. Элемент не включён в DOM-дерево, это нужно сделать вручную. | ||
|
||
### APNG.replaceImage(img) | ||
|
||
Заменяет элемент `img` (`HTMLImageElement`) на `canvas` с анимацией. Параметры обработчиков такие же, | ||
как и у `APNG.createAPNGCanvas`. Замена происходит только если `img` содержит корректный PNG-файл. | ||
Заменяет элемент `img` (`HTMLImageElement`) на `canvas` с анимацией. Замена происходит только если `img` содержит корректный PNG-файл. Этот метод вызывается без `callback`-а. | ||
|
||
Пример использования | ||
-------------------- | ||
|
||
APNG.ready(function() { | ||
for (var i = 0; i < document.images.length; i++) { | ||
if (/\.png$/i.test(img.src)) APNG.replaceImage(img); | ||
} | ||
}); | ||
|
||
Ограничения | ||
----------- | ||
|
||
Поскольку изображения загружаются при помощи `XMLHttpRequest`, то домен, на котором расположена | ||
картинка, должен быть тем же, что и домен, на котором расположена страничка. | ||
Поскольку изображения загружаются при помощи `XMLHttpRequest`, то домен, на котором расположена картинка, должен быть тем же, что и домен, на котором расположена страничка. | ||
|
||
Если домены разные, то в Chrome/Safari можно использовать [CORS](http://www.w3.org/TR/cors/ "Cross-Origin Resource Sharing"), настроив сервер картинок на отдачу заголовка `Access-Control-Allow-Origin: *`. | ||
|
||
Если домены разные, то в Chrome/Safari можно использовать | ||
[CORS](http://www.w3.org/TR/cors/ "Cross-Origin Resource Sharing"), | ||
настроив сервер картинок на отдачу заголовка `Access-Control-Allow-Origin: *`. | ||
К сожалению, применить CORS в случае с IE, по видимому, невозможно, так как соотв. объект `XDomainRequest` не позволяет получить ответ в виде двоичных данных (`XMLHttpRequest` позволяет это сделать через свойство `responseBody`). | ||
|
||
К сожалению, применить CORS в случае с IE, по видимому, не получится, так как соотв. объект | ||
`XDomainRequest` не позволяет получить ответ в виде двоичных данных | ||
(`XMLHttpRequest` позволяет это сделать через свойство `responseBody`). | ||
По той же причине (использование `XMLHttpRequest`) прилагаемый тестовый пример не будет работать с локальной машины (по протоколу file://), он должен быть выложен на реез-сервер. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.