This commit is contained in:
Ilya Kantor 2015-05-04 11:25:18 +03:00
parent 2a454aff13
commit ebb6e8ec41
7 changed files with 6 additions and 17 deletions

View file

@ -60,9 +60,7 @@
...Но как использовать на сервере шаблон с JavaScript, если его основной язык -- PHP, Ruby, Java?
Эту проблему решили обошли быстро.
На сервер, использующем PHP, Ruby, Java или какой-то другой язык, дополнительно ставится виртуальная машина [V8](http://code.google.com/p/v8/) и настраивается интеграция с ней. Почти все платформы это умеют.
Эту проблему можно обойти. На сервер, использующем PHP, Ruby, Java или какой-то другой язык, дополнительно ставится виртуальная машина [V8](http://code.google.com/p/v8/) и настраивается интеграция с ней. Почти все платформы это умеют.
После этого становится возможным запускать JavaScript-шаблоны и передавать им данные в виде объектов, массивов и так далее.

View file

@ -17,10 +17,6 @@
Замечания:
<ul>
<li>Код не должен зависеть от конкретных размеров мяча и поля.</li>
<li>Текущий HTML/CSS нельзя менять, можно лишь "украшать" (анимация).</li>
<li>Вам пригодятся свойства `event.clientX/event.clientY`</li>
</ul>
P.S. Центрировать мяч можно и при помощи CSS, но JavaScript в перспективе позволит делать это гибче и определять позицию более динамически.

View file

@ -129,7 +129,7 @@ while (target != this) {
table.onclick = function(event) {
var target = event.target;
var td = event.target.closest('td');
var td = target.closest('td');
if (!td) return; // клик вне <td>, не интересует
// если клик на td, но вне этой таблицы (возможно при вложенных таблицах)

View file

@ -54,7 +54,7 @@ var event = new Event(тип события[, флаги]);
Но код, который генерирует событие, может предусматривать какие-то ещё действия после `dispatchEvent`.
Вызов `event.preventDefault()` является возможностью для обработчика событие сообщить в сгенерировавший событие код, что эти действия продолжать не надо.
Вызов `event.preventDefault()` является возможностью для обработчика события сообщить в сгенерировавший событие код, что эти действия продолжать не надо.
В примере ниже есть функция `hide()`, которая при вызове генерирует событие `hide` на элементе `#rabbit`, уведомляя всех интересующихся, что кролик собирается спрятаться.

View file

@ -172,7 +172,7 @@ table.onmouseout = function(event) {
```
[online]
[codetabs height=450 src="mouseenter-mouseleave-delegation"]
[codetabs height=480 src="mouseenter-mouseleave-delegation"]
[/online]
@ -194,7 +194,7 @@ table.onmouseout = function(event) {
[online]
Детали кода вы можете посмотреть в примере ниже, который демонстрирует этот подход:
[codetabs height=450 src="mouseenter-mouseleave-delegation-2"]
[codetabs height=380 src="mouseenter-mouseleave-delegation-2"]
Попробуйте по-разному, быстро или медленно заходить и выходить в ячейки таблицы. Обработчики `mouseover/mouseout` стоят на `table`, но при помощи делегирования корректно обрабатывают вход-выход.[/online]

View file

@ -67,11 +67,6 @@
</table>
<textarea id="text"></textarea>
<input type="button" onclick="text.value=''" value="Очистить">
<script src="script.js"></script>
</body>

View file

@ -558,7 +558,7 @@ var compiled = _.template(tmpl, {sourceURL: '/template/menu-template'});
<ul>
<li>Шаблон -- это строка со специальными вставками кода `<% ... %>` или переменных `<%- expr ->`, `<%= expr ->`.</li>
<li>Вызов `_.template(tmpl)` превращает шаблон `tmpl` в функцию, которой в дальнейшем передаются данные --
и она генерирует HTML с ними. Можно вызвать передать данные сразу в `_.template` вторым аргументом.</li>
и она генерирует HTML с ними.</li>
</ul>
В этой главе мы рассмотрели хранение шаблонов в документе, при помощи `<script>` с нестандартным `type`. Конечно, есть и другие способы, можно хранить шаблоны и в отдельном файле, если шаблонная система или система сборки проектов это позволяют.