Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.08.2018, 07:17
Аспирант
Отправить личное сообщение для Самовар Посмотреть профиль Найти все сообщения от Самовар
 
Регистрация: 28.03.2017
Сообщений: 31

два скрипта не видят друг друга
Есть два файла .js, подключенные в один хтмл документ
<script src="js/generateGameField.js"></script>
<script src="js/script.js"></script>


Функции объявленные в одной файле не доступны в другом. Искал информацию, но кроме танцев с бубнами ничего путного и простого не нашел. Проблема на мой взгляд обязательна должна иметь простое и элегантное решение, ну просто не может быть такого, что два скрипта не видят друг друга, располагаясь в одном хтмл документе.
Ответить с цитированием
  #2 (permalink)  
Старый 27.08.2018, 08:32
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

window.func = function() {}
Ответить с цитированием
  #3 (permalink)  
Старый 27.08.2018, 08:37
Аспирант
Отправить личное сообщение для Самовар Посмотреть профиль Найти все сообщения от Самовар
 
Регистрация: 28.03.2017
Сообщений: 31

и куда это? Так объявлять функции, которые нужны в других скриптах?
Ответить с цитированием
  #4 (permalink)  
Старый 27.08.2018, 11:51
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

Видят прекрасно. Только функции должны быть объявлены в файле подключаемом первым.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 27.08.2018, 13:16
Аспирант
Отправить личное сообщение для Самовар Посмотреть профиль Найти все сообщения от Самовар
 
Регистрация: 28.03.2017
Сообщений: 31

то есть просто объявить все функции в файле js/generateGameField.js и всё будет работать? Кстати заметил, что функция из первого скрипта видна во втором, а из третьего второй не видит. А есть способ, чтобы не только из первого скрипта работало, иначе при более-менее нормальном проекте этот скрипт окажется просто мусорником всех функций, где черт ногу сломает
Ответить с цитированием
  #6 (permalink)  
Старый 27.08.2018, 13:17
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

Нет. Всё в js работает после загрузки по порядку. Из третьего виден первый и второй, из четвёртого первый, второй и третий, итд. Просто потому, что когда запускается второй - третий ещё только летит по сети.

Ещё можно поставить обрабочик на событие загрузки и тогда неважно какой там по порядку скрипт. Однако load срабатыват только после загрузки всего, в том числе и картинок, что может вызвать заметную задержку.
__________________
29375, 35

Последний раз редактировалось Aetae, 27.08.2018 в 13:29.
Ответить с цитированием
  #7 (permalink)  
Старый 27.08.2018, 13:22
Аспирант
Отправить личное сообщение для Самовар Посмотреть профиль Найти все сообщения от Самовар
 
Регистрация: 28.03.2017
Сообщений: 31

ясно, спасибо. А обойти такую последовательность никак?
Ответить с цитированием
  #8 (permalink)  
Старый 27.08.2018, 13:27
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

Объединить всё в один файл. Для этого есть разные инструменты.
Либо использовать события загрузки, нативные или самописные и запускать основной код только когда подгрузится всё нужное.
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 27.08.2018, 16:07
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от Самовар
А обойти такую последовательность никак?
Ну модули есть еще, подключается один файл, а остальные им тянутся по необходимости.
<!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 };

Последний раз редактировалось Rise, 27.08.2018 в 16:30.
Ответить с цитированием
  #10 (permalink)  
Старый 27.08.2018, 22:50
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Сообщение от Самовар
Функции объявленные в одной файле не доступны в другом.
У меня когда то была подобная проблема, возможно у вас такое.
У меня было что код был внутри функции ожидающей полной загрузки хтмл-документа, типа:
window.onload = {
   // тут код
}

и я не мог достучаться до функций внутри. Пришлось убрать window.onload
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Два одинаковых скрипта.. Как устранить конфликт? Mark_Larin Общие вопросы Javascript 21 24.09.2013 16:25
Два javascript перебивают друг друга Максим21 Ваши сайты и скрипты 0 29.07.2013 12:24
Два события перебивают друг друга BorodinKO Общие вопросы Javascript 2 29.08.2012 12:59
Конфликтуют два скрипта Aydar_nv Работа 2 27.01.2011 11:13
Блок переключения меню на JS, два скрипта в одном файле Dizeloid Элементы интерфейса 0 30.07.2009 12:03