два скрипта не видят друг друга
Есть два файла .js, подключенные в один хтмл документ
<script src="js/generateGameField.js"></script> <script src="js/script.js"></script> Функции объявленные в одной файле не доступны в другом. Искал информацию, но кроме танцев с бубнами ничего путного и простого не нашел. Проблема на мой взгляд обязательна должна иметь простое и элегантное решение, ну просто не может быть такого, что два скрипта не видят друг друга, располагаясь в одном хтмл документе. |
window.func = function() {} |
и куда это? Так объявлять функции, которые нужны в других скриптах?
|
Видят прекрасно. Только функции должны быть объявлены в файле подключаемом первым.
|
то есть просто объявить все функции в файле js/generateGameField.js и всё будет работать? Кстати заметил, что функция из первого скрипта видна во втором, а из третьего второй не видит. А есть способ, чтобы не только из первого скрипта работало, иначе при более-менее нормальном проекте этот скрипт окажется просто мусорником всех функций, где черт ногу сломает
|
Нет. Всё в js работает после загрузки по порядку. Из третьего виден первый и второй, из четвёртого первый, второй и третий, итд. Просто потому, что когда запускается второй - третий ещё только летит по сети.
Ещё можно поставить обрабочик на событие загрузки и тогда неважно какой там по порядку скрипт. Однако load срабатыват только после загрузки всего, в том числе и картинок, что может вызвать заметную задержку. |
ясно, спасибо. А обойти такую последовательность никак?
|
Объединить всё в один файл. Для этого есть разные инструменты.
Либо использовать события загрузки, нативные или самописные и запускать основной код только когда подгрузится всё нужное. |
Цитата:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> <script type="module" src="app.js"></script> </head> <body> </body> </html> // app.js import { x } from './a.js'; import { y } from './b.js'; console.log(y(x)); // a.js let x = 7; export { x }; // b.js import { z } from './c.js'; let y = (n) => n * z; export { y }; // c.js let z = 5; export { z }; |
Цитата:
У меня было что код был внутри функции ожидающей полной загрузки хтмл-документа, типа: window.onload = { // тут код } и я не мог достучаться до функций внутри. Пришлось убрать window.onload |
Часовой пояс GMT +3, время: 14:17. |