diff --git a/3-more/2-ajax/3-ajax-xmlhttprequest/article.md b/3-more/2-ajax/3-ajax-xmlhttprequest/article.md index c6ba68a0..d2b62a06 100644 --- a/3-more/2-ajax/3-ajax-xmlhttprequest/article.md +++ b/3-more/2-ajax/3-ajax-xmlhttprequest/article.md @@ -326,7 +326,7 @@ xhr.ontimeout = function() { Кросс-браузерно: ```js -var XHR = window.XDomainRequest || XMLHttpRequest; +var XHR = ("onload" in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest; var xhr = new XHR(); ``` diff --git a/3-more/2-ajax/5-xhr-crossdomain/article.md b/3-more/2-ajax/5-xhr-crossdomain/article.md index ddfe8512..ea5aee12 100644 --- a/3-more/2-ajax/5-xhr-crossdomain/article.md +++ b/3-more/2-ajax/5-xhr-crossdomain/article.md @@ -16,16 +16,13 @@ ```js // (1) -var xhr = new XMLHttpRequest(); -if (!xhr.onload) { // это IE 8/9, в них старый XMLHttpRequest - if (!window.XDomainRequest) throw new Error("Not supported"); - xhr = new XDomainRequest(); // ..но есть XDomainRequest -} +var XHR = ("onload" in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest; + +var xhr = new XHR(); // (2) запрос на другой домен :) -xhr.open('GET', 'http://anywhere.com/vote.php', true); +xhr.open('GET', 'http://anywhere.com/path', true); -// (3) xhr.onload = function() { alert(this.responseText); } @@ -34,23 +31,18 @@ xhr.onerror = function() { alert('Ошибка ' + this.status); } -xhr.send(''); +xhr.send(); ``` -Комментарии:
    -
  1. Мы создаём `XMLHttpRequest` и проверяем, поддерживает ли он событие `onload`. Если нет, то это старый `XMLHttpRequest`. Возможно, у нас IE8-9, значит надо попробовать `XDomainRequest`.
  2. -
  3. Запрос на другой домен отсылается просто указанием соответствующего URL в `open`. Он должен быть асинхронным.
  4. -
  5. Все браузеры, которые поддерживают кросс-доменные запросы, поддерживают и события `onload/onerror`, которые можно использовать вместо `onreadystatechange`.
  6. +
  7. Мы создаём `XMLHttpRequest` и проверяем, поддерживает ли он событие `onload`. Если нет, то это старый `XMLHttpRequest`, значит это IE8,9, и используем `XDomainRequest`.
  8. +
  9. Запрос на другой домен отсылается просто указанием соответствующего URL в `open`. Он обязательно должен быть асинхронным, в остальном -- никаких особенностей.
+## Контроль безопасности -### Контроль безопасности - -Контроль безопасности осуществляется на уровне браузера. - -**В кросс-доменный запрос браузер автоматически добавляет заголовок `Origin`, содержащий домен, с которого осуществлён запрос.** +В кросс-доменный запрос браузер автоматически добавляет заголовок `Origin`, содержащий домен, с которого осуществлён запрос. В данном случае заголовки будут примерно такие: @@ -70,7 +62,7 @@ Origin:http://javascript.ru Сервер должен, со своей стороны, ответить специальными заголовками, разрешает ли он такой запрос к себе. -**Если сервер разрешает кросс-доменный запрос с этого домена -- он должен добавить к ответу заголовок `Access-Control-Allow-Origin`, содержащий домен запроса или звёздочку `*`.** +**Если сервер разрешает кросс-доменный запрос с этого домена -- он должен добавить к ответу заголовок `Access-Control-Allow-Origin`, содержащий домен запроса (в данном случае "javascript.ru") или звёздочку `*`.** Только при наличии такого заголовка в ответе -- браузер сочтёт запрос успешным, а иначе JavaScript получит ошибку. diff --git a/3-more/2-animation/1-js-animation/article.md b/3-more/2-animation/1-js-animation/article.md index a5858325..9df716e8 100644 --- a/3-more/2-animation/1-js-animation/article.md +++ b/3-more/2-animation/1-js-animation/article.md @@ -364,7 +364,7 @@ function elastic(progress, x) { ``` **График для `x=1.5`:** - + Пример для `x=1.5`:
diff --git a/3-more/2-animation/1-js-animation/elastic.png b/3-more/2-animation/1-js-animation/elastic.png deleted file mode 100755 index d889e888..00000000 Binary files a/3-more/2-animation/1-js-animation/elastic.png and /dev/null differ diff --git a/3-more/2-animation/1-js-animation/elastic.svg b/3-more/2-animation/1-js-animation/elastic.svg new file mode 100644 index 00000000..0cf307cb --- /dev/null +++ b/3-more/2-animation/1-js-animation/elastic.svg @@ -0,0 +1,25 @@ + + + + elastic.svg + Created with bin/sketchtool. + + + + + + + + + + 0 + + + 1 + + + 1 + + + + \ No newline at end of file diff --git a/figures.sketch b/figures.sketch index aea93697..cc922335 100644 Binary files a/figures.sketch and b/figures.sketch differ