This commit is contained in:
Ilya Kantor 2014-11-16 01:40:20 +03:00
parent 962caebbb7
commit 87bf53d076
1825 changed files with 94929 additions and 0 deletions

View file

@ -0,0 +1,19 @@
# Подсказка
Добавляйте `SCRIPT` при помощи методов `DOM`:
```js
var script = document.createElement('script');
script.src = src;
// в документе может не быть HEAD или BODY,
// но хотя бы один (текущий) SCRIPT в документе есть
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(script, s); // перед ним и вставим
```
На скрипт повесьте обработчики `onload/onreadystatechange`.
# Решение
[edit src="solution"]Открыть в песочнице[/edit]

View file

@ -0,0 +1,3 @@
function go () {
alert("ok");
}

View file

@ -0,0 +1,41 @@
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script>
function addScript(src, callback) {
var script = document.createElement('script');
script.src = src;
var s = document.getElementsByTagName('script')[0]
s.parentNode.insertBefore(script, s);
var loaded = false;
function onload() {
if (loaded) return; // повторный вызов
loaded = true;
callback();
}
script.onload = onload; // все браузеры, IE с версии 9
script.onreadystatechange = function () { // IE<9
if (this.readyState == 'loaded' || this.readyState == 'complete') {
setTimeout(onload, 0);
}
};
}
addScript("go.js", function() {
go();
});
</script>
</body>
</html>

View file

@ -0,0 +1,3 @@
function go() {
alert("ok");
}

View file

@ -0,0 +1,21 @@
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script>
function addScript(src, callback) {
/* ваш код */
}
addScript("go.js", function() {
go();
});
</script>
</body>
</html>

View file

@ -0,0 +1,20 @@
# Скрипт с коллбэком
[importance 4]
Создайте функцию `addScript(src, callback)`, которая загружает скрипт с данным `src`, и после его загрузки и выполнения вызывает функцию `callback`.
Скрипт может быть любым, работа функции не должна зависеть от его содержимого.
Пример использования:
```js
// go.js содержит функцию go()
addScript("go.js", function() {
go();
});
```
Ошибки загрузки обрабатывать не нужно.
[edit src="source" task/]