diff --git a/1-js/1-getting-started/2-pre-coding/article.md b/1-js/1-getting-started/2-pre-coding/article.md
index 5ff20a77..b3242196 100644
--- a/1-js/1-getting-started/2-pre-coding/article.md
+++ b/1-js/1-getting-started/2-pre-coding/article.md
@@ -4,7 +4,7 @@
Если вы только начинаете изучение, то вряд ли они будут нужны прямо сейчас. Тем не менее, эта глава находится в начале, так как предсказать точный момент, когда вы захотите заглянуть в справочник -- невозможно, но точно известно, что этот момент настанет.
-Поэтому рекомендуется кратко взглянуть на эту страницу и взять её на заметку, чтобы при необходимости вернуться к ней в будущем.
+Поэтому рекомендуется кратко взглянуть на неё и взять на заметку, чтобы при необходимости вернуться в будущем.
[cut]
diff --git a/1-js/2-first-steps/2-external-script/article.md b/1-js/2-first-steps/2-external-script/article.md
index 9475d8d4..f3419b6d 100644
--- a/1-js/2-first-steps/2-external-script/article.md
+++ b/1-js/2-first-steps/2-external-script/article.md
@@ -104,7 +104,7 @@
Начало страницы...
-
+
...Важная информация!
```
@@ -155,7 +155,7 @@
Начало страницы...
-
+
...Важная информация!
```
diff --git a/1-js/3-writing-js/4-testing/1-pow-nan-spec/task.md b/1-js/3-writing-js/4-testing/1-pow-nan-spec/task.md
index ce3b498b..c3239b69 100644
--- a/1-js/3-writing-js/4-testing/1-pow-nan-spec/task.md
+++ b/1-js/3-writing-js/4-testing/1-pow-nan-spec/task.md
@@ -9,7 +9,7 @@
Она содержит HTML с тестами. Обратите внимание, что HTML-страница в ней короче той, что обсуждалась в статье [](/testing). Это потому что библиотеки Chai, Mocha и Sinon объединены в один файл:
```html
-
+
```
Этот файл содержит код библиотек, стили, настройки для них и запуск `mocha.run` по окончании загрузки страницы. Если нет элемента с `id="mocha"`, то результаты выводятся в ``.
diff --git a/1-js/4-data-structures/8-array-methods/10-filter-anagrams/_js.view/test.js b/1-js/4-data-structures/8-array-methods/10-filter-anagrams/_js.view/test.js
index cf97fa8b..715a8517 100644
--- a/1-js/4-data-structures/8-array-methods/10-filter-anagrams/_js.view/test.js
+++ b/1-js/4-data-structures/8-array-methods/10-filter-anagrams/_js.view/test.js
@@ -1,8 +1,21 @@
+function intersection(arr1, arr2) {
+ return arr1.filter(function(item) {
+ return arr2.indexOf(item) != -1;
+ });
+}
+
describe("aclean", function() {
- it("удаляет анаграммы", function() {
+ it("содержит ровно по 1 слову из каждого набора анаграмм", function() {
var arr = ["воз", "киборг", "корсет", "зов", "гробик", "костер", "сектор"];
- assert.sameMembers(aclean(arr), ["гробик", "зов", "сектор"]);
+
+ var result = aclean(arr);
+ assert.equal(result.length, 3);
+
+ assert.equal(intersection(result, ["гробик", "киборг"]).length, 1);
+ assert.equal(intersection(result, ["воз", "зов"]).length, 1);
+ assert.equal(intersection(result, ["корсет", "сектор", "костер"]).length, 1);
+
});
it("не различает регистр символов", function() {
@@ -10,4 +23,4 @@ describe("aclean", function() {
assert.equal( aclean(arr).length, 1 );
});
-});
+});
\ No newline at end of file
diff --git a/2-ui/1-document/15-metrics/4-put-ball-in-center/ball-half/index.html b/2-ui/1-document/15-metrics/4-put-ball-in-center/ball-half/index.html
index 818ab431..96382832 100755
--- a/2-ui/1-document/15-metrics/4-put-ball-in-center/ball-half/index.html
+++ b/2-ui/1-document/15-metrics/4-put-ball-in-center/ball-half/index.html
@@ -18,7 +18,7 @@
[/head]
\ No newline at end of file
diff --git a/2-ui/3-event-details/10-onload-ondomcontentloaded/article.md b/2-ui/3-event-details/10-onload-ondomcontentloaded/article.md
index 592a3161..85831786 100644
--- a/2-ui/3-event-details/10-onload-ondomcontentloaded/article.md
+++ b/2-ui/3-event-details/10-onload-ondomcontentloaded/article.md
@@ -42,7 +42,7 @@ document.addEventListener( "DOMContentLoaded", ready, false );
*/!*
-
+
```
В примере выше размеры обработчик `DOMContentLoaded` сработает сразу после загрузки документа, не дожидаясь получения картинки.
@@ -104,7 +104,7 @@ Firefox/Chrome/Opera автозаполняют формы по `DOMContentLoade
*/!*
-
+
```
## window.onunload
@@ -162,7 +162,7 @@ Firefox игнорирует текст, а всегда показывает с
```html
-
+
-
+
diff --git a/2-ui/3-event-details/11-onload-onerror/1-nice-alt/source.view/index.html b/2-ui/3-event-details/11-onload-onerror/1-nice-alt/source.view/index.html
index 21acdfeb..022f0844 100755
--- a/2-ui/3-event-details/11-onload-onerror/1-nice-alt/source.view/index.html
+++ b/2-ui/3-event-details/11-onload-onerror/1-nice-alt/source.view/index.html
@@ -23,9 +23,9 @@
-
-
-
+
+
+
diff --git a/2-ui/3-event-details/11-onload-onerror/2-load-img-callback/solution.view/index.html b/2-ui/3-event-details/11-onload-onerror/2-load-img-callback/solution.view/index.html
index 2b657ab6..ad9aefe6 100755
--- a/2-ui/3-event-details/11-onload-onerror/2-load-img-callback/solution.view/index.html
+++ b/2-ui/3-event-details/11-onload-onerror/2-load-img-callback/solution.view/index.html
@@ -27,9 +27,9 @@
// ---------- Проверка ----------
var sources = [
- "http://js.cx/images-load/1.jpg",
- "http://js.cx/images-load/2.jpg",
- "http://js.cx/images-load/3.jpg"
+ "//js.cx/images-load/1.jpg",
+ "//js.cx/images-load/2.jpg",
+ "//js.cx/images-load/3.jpg"
];
for (var i=0; i
+
Текст
```
-Обработчик сработает. Но побочным эффектом является *выделение текста браузером*.
-
-**Чтобы избежать выделения, мы должны предотвратить действие браузера по умолчанию для события [selectstart](http://msdn.microsoft.com/en-us/library/ms536969%28VS.85%29.aspx) в IE и `mousedown` в других браузерах.**
+Чтобы избежать выделения, мы должны предотвратить действие браузера по умолчанию для события [selectstart](http://msdn.microsoft.com/en-us/library/ms536969%28VS.85%29.aspx) в IE и `mousedown` в других браузерах.
Полный код элемента, который обрабатывает двойной клик без выделения:
```html
-
+
Двойной клик сюда выведет "Тест", без выделения
@@ -32,7 +35,7 @@
При установке на родителя -- все его потомки станут невыделяемыми:
```html
-
+
Элементы списка не выделяются при клике:
Винни-Пух
@@ -56,10 +59,10 @@
Для этого мы используем методы работы с выделением, которые описаны в отдельной главе [](/range-textrange-selection). Здесь нам понадобится всего лишь одна функция `clearSelection`, которая будет снимать выделение.
-Например, попробуйте двойной клик на этот элемент списка:
+Пример со снятием выделения при двойном клике на элемент списка:
```html
-
+
Выделение отменяется при двойном клике.
@@ -75,10 +78,10 @@
```
-У этого подхода есть две особенности:
+У этого подхода есть две особенности, на которые стоит обратить внимание:
-
Выделение всё же производится, но тут же снимается.
+
Выделение всё же производится, но тут же снимается. Это выглядит как мигание и не очень красиво.
Выделение при помощи передвижения зажатой мыши всё еще работает, так что посетитель имеет возможность выделить содержимое элемента.
@@ -114,7 +117,7 @@ b {
### IE9-: атрибут unselectable="on"
-В IE9- нет `user-select`, но есть атрибут [unselectable](http://msdn.microsoft.com/en-us/library/ms534706%28v=vs.85%29.aspx).
+В IE9- нет `user-select`, но есть атрибут [unselectable](http://msdn.microsoft.com/en-us/library/ms534706%28v=vs.85%29.aspx).
Он отменяет выделение, но у него есть особенности:
@@ -128,12 +131,14 @@ b {
```
+Левая часть текста в IE не выделяется при двойном клике. Правую часть (`em`) можно выделить, т.к. на ней нет атрибута `unselectable`.
+
+[online]
В действии:
Этот текст невыделяем в IE, кроме дочерних элементов
-
-Левая часть текста в IE не выделяется при двойном клике. Правую часть (`em`) можно выделить, т.к. на ней нет атрибута `unselectable`.
+[/online]
## Итого
@@ -157,14 +162,16 @@ elem.onmousedown = elem.onselectstart = function() {
Какой же способ выбирать?
-Это зависит от задач и вашего удобства, а также конкретного случая. Все описанные способы работают. Обычно через JavaScript -- наиболее просто и кросс-браузерно.
+Это зависит от задач и вашего удобства, а также конкретного случая. Все описанные способы работают.
-**В любом случае эти способы не предназначены для защиты от выделения-и-копирования.**
+Недостаток `user-select` -- в том, что посетитель теряет возможность скопировать текст. А что, если он захочет именно это сделать?
+
+В любом случае эти способы не предназначены для защиты от выделения-и-копирования.
Если уж хочется запретить копирование -- можно использовать событие `oncopy`:
```html
-
+
Уважаемый копирователь,
почему-то автор хочет заставить вас покопаться в исходном коде этой страницы.
diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/article.md b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/article.md
index 8d955f1a..a1872698 100644
--- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/article.md
+++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/article.md
@@ -2,6 +2,7 @@
В этой главе мы рассмотрим события, возникающие при движении мыши над элементами.
[cut]
+
## События mouseover/mouseout, свойство relatedTarget
Событие `mouseover` происходит, когда мышь появляется над элементом, а `mouseout` -- когда уходит из него.
diff --git a/2-ui/3-event-details/6-drag-and-drop/2-drag-heroes/solution.view/index.html b/2-ui/3-event-details/6-drag-and-drop/2-drag-heroes/solution.view/index.html
index 3cb1f873..563aff26 100755
--- a/2-ui/3-event-details/6-drag-and-drop/2-drag-heroes/solution.view/index.html
+++ b/2-ui/3-event-details/6-drag-and-drop/2-drag-heroes/solution.view/index.html
@@ -25,12 +25,12 @@
-
+
-
-
+
+
diff --git a/2-ui/3-event-details/6-drag-and-drop/2-drag-heroes/solution.view/soccer.css b/2-ui/3-event-details/6-drag-and-drop/2-drag-heroes/solution.view/soccer.css
index c79a9e7a..b0095acc 100755
--- a/2-ui/3-event-details/6-drag-and-drop/2-drag-heroes/solution.view/soccer.css
+++ b/2-ui/3-event-details/6-drag-and-drop/2-drag-heroes/solution.view/soccer.css
@@ -4,14 +4,14 @@ html, body {
}
#field {
- background: url(http://js.cx/drag-heroes/field.png);
+ background: url(//js.cx/drag-heroes/field.png);
width: 800px;
height: 600px;
float: left;
}
.hero {
- background: url(http://js.cx/drag-heroes/heroes.png);
+ background: url(//js.cx/drag-heroes/heroes.png);
width: 105px;
height: 128px;
float: left;
@@ -39,7 +39,7 @@ html, body {
}
#winnie {
- background: url(http://js.cx/drag-heroes/winnie.png);
+ background: url(//js.cx/drag-heroes/winnie.png);
width: 115px;
height: 128px;
float: left;
diff --git a/2-ui/3-event-details/6-drag-and-drop/2-drag-heroes/source.view/index.html b/2-ui/3-event-details/6-drag-and-drop/2-drag-heroes/source.view/index.html
index 66de6971..235238f1 100755
--- a/2-ui/3-event-details/6-drag-and-drop/2-drag-heroes/source.view/index.html
+++ b/2-ui/3-event-details/6-drag-and-drop/2-drag-heroes/source.view/index.html
@@ -26,12 +26,12 @@
-
+
-
-
+
+
diff --git a/2-ui/3-event-details/9-event-onscroll/2-updown-button/solution.view/index.html b/2-ui/3-event-details/9-event-onscroll/2-updown-button/solution.view/index.html
index d94be96f..a668298a 100755
--- a/2-ui/3-event-details/9-event-onscroll/2-updown-button/solution.view/index.html
+++ b/2-ui/3-event-details/9-event-onscroll/2-updown-button/solution.view/index.html
@@ -26,11 +26,11 @@
}
#updown.up {
- background: url(http://js.cx/clipart/updown.gif) left top;
+ background: url(//js.cx/clipart/updown.gif) left top;
}
#updown.down {
- background: url(http://js.cx/clipart/updown.gif) left -9px;
+ background: url(//js.cx/clipart/updown.gif) left -9px;
}
diff --git a/2-ui/3-event-details/9-event-onscroll/2-updown-button/source.view/index.html b/2-ui/3-event-details/9-event-onscroll/2-updown-button/source.view/index.html
index 814e090c..1823d5a9 100755
--- a/2-ui/3-event-details/9-event-onscroll/2-updown-button/source.view/index.html
+++ b/2-ui/3-event-details/9-event-onscroll/2-updown-button/source.view/index.html
@@ -21,7 +21,7 @@
-
+
diff --git a/2-ui/3-event-details/9-event-onscroll/3-load-visible-img/solution.view/index.html b/2-ui/3-event-details/9-event-onscroll/3-load-visible-img/solution.view/index.html
index 7b5514f9..877d48a3 100755
--- a/2-ui/3-event-details/9-event-onscroll/3-load-visible-img/solution.view/index.html
+++ b/2-ui/3-event-details/9-event-onscroll/3-load-visible-img/solution.view/index.html
@@ -27,7 +27,7 @@
Будущее уже сейчас! Скоро фраза из фантастического фильма "флипнуть до космопорта" станет реальностью. По крайней мере вторую ее часть человечество обеспечило. В октябре состоялась официальная церемония открытия космопорта «Америка», первой в мире коммерческой площадки для частных космических полетов. Космопорт открылся в пустыне штата Нью-Мексико. Проект был реализован английским бюро Foster and Partners. Космопорт включает в себя зал ожидания и подготовки к полетам, диспетчерский пункт и ангар. Также обеспечена взлетно-посадочная полоса длиной в три километра.
-
+
@@ -36,8 +36,8 @@
Супермодель Анна Вялицына (Anne Vyalitsyna) и музыкант Адам Ливайн (Adam Levine) снялись в ноябрьском номере Vogue Russia. Снимал их Аликс Малка (Alix Malka). Анна и Адам примерили на себя рок-н-ролльные наряды от Alexander Wang, Louis Vuitton, Alexander McQueen, Balmain, Yves Saint Laurent, подобранные для них Катериной Мухиной.
-
-
+
+
@@ -46,8 +46,8 @@
Стивен Мейзел (Steven Meisel) снял фотосессию для октябрьского Vogue Italia. В съемках приняли участие: Карен Элсон (Karen Elson), Джиневер ван Синус (Guinevere van Seenus), Эмма Балфур (Emma Balfour), Эн Уст (An Oost), Коринна Ингенлеф (Corinna Ingenleuf), Танга Моро (Tanga Moreau), Кордула Рейер (Cordula Reyer), Гейл о`Нил (Gail O'Neil), Эвелин Кун (Evelyn Kuhn), Каролин де Мэгрэ (Caroline de Maigret), Дэльфин Бафор (Delfine Bafort), Кирстен Оуэн (Kirsten Owen), Гунилла Линдблад (Gunilla Lindblad).
-
-
+
+
@@ -57,7 +57,7 @@
Художник из Филадельфии Мэтью Кокс (Matthew Cox) создал серию работ, в которых объединены медицинский рентген и вышивка. Художник взял рентгенограммы и вышил их предполагаемое содержание частично со скелетными элементами. Получилось зловеще и интригующе. Выставка "Вышитый рентген" будет демонстрироваться в галерее Packer/Schopf в Майами, в рамках Базельской Художественной Недели.
Эта серия - только треть творческой продукции Кокса. Он также создает традиционные картины и иллюстрации.
-
+
@@ -65,7 +65,7 @@
Etoday предлагает полистать страницы подарочного каталога продукции Apple образца 1983 года. Кажется, это было так давно!
Эта серия - только треть творческой продукции Кокса. Он также создает традиционные картины и иллюстрации.
-
+
@@ -73,7 +73,7 @@ Etoday предлагает полистать страницы подарочн
Занимательная коллекция старых почтовых открыток праздника Halloween. Открытки взяты из ньюйоркской публичной библиотеки и датируются примерно 1910 г.
-
+
@@ -81,7 +81,7 @@ Etoday предлагает полистать страницы подарочн
Молодой фотограф Эмили Ли (Emily Lee) использует фотографию, чтобы выразить свои чувства. "Когда я смотрю на жизнь через камеру, вижу все более ясно, - пишет она на своем профиле Flickr. - Фотосъемка - это искусство наблюдения." Эмили Ли - обладательница большого таланта и умения глубоко понимать искусство, хотя учится еще только в средней школе.
-
+
@@ -89,7 +89,7 @@ Etoday предлагает полистать страницы подарочн
Fashimals - tumblr-блог, посвященный иконам моды, превращенным в животных. Здесь есть Анна Винтур, Карл Лагерфельд, Терри Ричардсон, а также много других их коллег.
-
+
diff --git a/2-ui/3-event-details/9-event-onscroll/3-load-visible-img/source.view/index.html b/2-ui/3-event-details/9-event-onscroll/3-load-visible-img/source.view/index.html
index 37843ce1..0359f69c 100755
--- a/2-ui/3-event-details/9-event-onscroll/3-load-visible-img/source.view/index.html
+++ b/2-ui/3-event-details/9-event-onscroll/3-load-visible-img/source.view/index.html
@@ -27,7 +27,7 @@
Будущее уже сейчас! Скоро фраза из фантастического фильма "флипнуть до космопорта" станет реальностью. По крайней мере вторую ее часть человечество обеспечило. В октябре состоялась официальная церемония открытия космопорта «Америка», первой в мире коммерческой площадки для частных космических полетов. Космопорт открылся в пустыне штата Нью-Мексико. Проект был реализован английским бюро Foster and Partners. Космопорт включает в себя зал ожидания и подготовки к полетам, диспетчерский пункт и ангар. Также обеспечена взлетно-посадочная полоса длиной в три километра.
-
+
@@ -36,8 +36,8 @@
Супермодель Анна Вялицына (Anne Vyalitsyna) и музыкант Адам Ливайн (Adam Levine) снялись в ноябрьском номере Vogue Russia. Снимал их Аликс Малка (Alix Malka). Анна и Адам примерили на себя рок-н-ролльные наряды от Alexander Wang, Louis Vuitton, Alexander McQueen, Balmain, Yves Saint Laurent, подобранные для них Катериной Мухиной.
-
-
+
+
@@ -46,8 +46,8 @@
Стивен Мейзел (Steven Meisel) снял фотосессию для октябрьского Vogue Italia. В съемках приняли участие: Карен Элсон (Karen Elson), Джиневер ван Синус (Guinevere van Seenus), Эмма Балфур (Emma Balfour), Эн Уст (An Oost), Коринна Ингенлеф (Corinna Ingenleuf), Танга Моро (Tanga Moreau), Кордула Рейер (Cordula Reyer), Гейл о`Нил (Gail O'Neil), Эвелин Кун (Evelyn Kuhn), Каролин де Мэгрэ (Caroline de Maigret), Дэльфин Бафор (Delfine Bafort), Кирстен Оуэн (Kirsten Owen), Гунилла Линдблад (Gunilla Lindblad).
-
-
+
+
@@ -57,7 +57,7 @@
Художник из Филадельфии Мэтью Кокс (Matthew Cox) создал серию работ, в которых объединены медицинский рентген и вышивка. Художник взял рентгенограммы и вышил их предполагаемое содержание частично со скелетными элементами. Получилось зловеще и интригующе. Выставка "Вышитый рентген" будет демонстрироваться в галерее Packer/Schopf в Майами, в рамках Базельской Художественной Недели.
Эта серия - только треть творческой продукции Кокса. Он также создает традиционные картины и иллюстрации.
-
+
@@ -65,7 +65,7 @@
Etoday предлагает полистать страницы подарочного каталога продукции Apple образца 1983 года. Кажется, это было так давно!
Эта серия - только треть творческой продукции Кокса. Он также создает традиционные картины и иллюстрации.
-
+
@@ -73,7 +73,7 @@ Etoday предлагает полистать страницы подарочн
Занимательная коллекция старых почтовых открыток праздника Halloween. Открытки взяты из ньюйоркской публичной библиотеки и датируются примерно 1910 г.
-
+
@@ -81,7 +81,7 @@ Etoday предлагает полистать страницы подарочн
Молодой фотограф Эмили Ли (Emily Lee) использует фотографию, чтобы выразить свои чувства. "Когда я смотрю на жизнь через камеру, вижу все более ясно, - пишет она на своем профиле Flickr. - Фотосъемка - это искусство наблюдения." Эмили Ли - обладательница большого таланта и умения глубоко понимать искусство, хотя учится еще только в средней школе.
-
+
@@ -89,7 +89,7 @@ Etoday предлагает полистать страницы подарочн
Fashimals - tumblr-блог, посвященный иконам моды, превращенным в животных. Здесь есть Анна Винтур, Карл Лагерфельд, Терри Ричардсон, а также много других их коллег.
-
+
diff --git a/2-ui/3-event-details/9-event-onscroll/3-load-visible-img/task.md b/2-ui/3-event-details/9-event-onscroll/3-load-visible-img/task.md
index 556276bd..c809ec00 100644
--- a/2-ui/3-event-details/9-event-onscroll/3-load-visible-img/task.md
+++ b/2-ui/3-event-details/9-event-onscroll/3-load-visible-img/task.md
@@ -12,7 +12,7 @@
```
-
+
Стоит вот такое:
@@ -21,7 +21,7 @@
```
-
+
То есть настоящий URL находится в атрибуте `realsrc` (название атрибута можно выбрать любое). А в `src` поставлен серый GIF размера 1x1, и так как `width/height` правильные, то он растягивается, так что вместо изображения виден серый прямоугольник.
diff --git a/2-ui/3-event-details/index.md b/2-ui/3-event-details/index.md
index 11860ec4..49b7cf96 100644
--- a/2-ui/3-event-details/index.md
+++ b/2-ui/3-event-details/index.md
@@ -1,5 +1,5 @@
# События в деталях
-Основные типы событий, которые нужны в 95% случаев. Глубоко изучаем их особенности и применение.
+В этом разделе мы разбираем конкретные события и особенности работы с ними.
-Вы можете читать этот раздел в любом порядке или кратко просмотреть его и вернуться к конкретным событиям, когда они понадобятся.
\ No newline at end of file
+Вы можете читать его в любом порядке или кратко просмотреть его и вернуться к конкретным событиям, когда они понадобятся.
\ No newline at end of file
diff --git a/2-ui/4-forms-controls/2-focus-blur/2-keyboard-mouse/solution.view/index.html b/2-ui/4-forms-controls/2-focus-blur/2-keyboard-mouse/solution.view/index.html
index 6420c533..60771c10 100755
--- a/2-ui/4-forms-controls/2-focus-blur/2-keyboard-mouse/solution.view/index.html
+++ b/2-ui/4-forms-controls/2-focus-blur/2-keyboard-mouse/solution.view/index.html
@@ -18,7 +18,7 @@
Кликните на мышонка и передвигайте его, нажимая клавиши со стрелками.