Как передать значение переменной из <script> html в функцию файла js, подключаемую этой строкой?

392
29 июня 2017, 05:24

В файле html внутри <head> внёс :

<script>(function (){document.write('\x3Cscript src="/sss/j01.js?id=' + Number(new Date) + '">\x3C/script>');g_file = 'sss';}())</script>

В подключаемом, таким образом, файле j01.js есть функция myf, которая работает с, объявленной в коде выше, переменной g_file = 'sss'.

Не получается уйти от этой переменной, например, запустив ф-цию myf('sss'), прямо из приведенного кода ... подскажите, плиз, как такое сделать.

Т.е. так не работает и через if (document.write ...) myf('sss') тоже :

<script>(function (){document.write('\x3Cscript src="/sss/j01.js?id=' + Number(new Date) + '">\x3C/script>');myf('sss');}())</script>
Answer 1

Вынеси вызов функции в следующий скрипт, чтобы он шёл после добавляемого:

<script>(function (){document.write('\x3Cscript src="/sss/j01.js?id=' + Number(new Date) + '">\x3C/script>\x3Cscript>myf(\'sss\')\x3Cscript>');}())</script>
Answer 2

Потому-что когда вы вызываете функцию mif, скрипт еще не загрузился.

function getScript(url,cb){ 
    const s = document.createElement('script'); 
    s.onload = cb; 
    s.onerror = err => console.error(err); 
    s.setAttribute('src', url); 
    s.setAttribute('type', 'text/javascript'); 
    document.getElementsByTagName('head')[0].appendChild(s); 
} 
getScript("/sss/j01.js?id=" + Number(new Date), () => { 
  myf('sss'); 
});

READ ALSO
Почему из #value первого поля в форме вырезаются пробелы?

Почему из #value первого поля в форме вырезаются пробелы?

Есть форма и кнопка выше нееПри нажатии на кнопку выводятся значения для первого и второго (нулевого и первого) полей - email и username

236
как узнать ширину без учета padding и border в javascript

как узнать ширину без учета padding и border в javascript

Мне нужно узнать ширину блока без учета padding без JQuery при этом это должно указываться только в пикселях и быть числом

409
Команды JavaScript из адресной строки

Команды JavaScript из адресной строки

Возможно ли как-то запретить выполнение JavaScript из адресной строки? То есть, запросы вида:

433
Сделать кроссдоменный запрос к бекэнду

Сделать кроссдоменный запрос к бекэнду

Помогите пожалуйста решить проблему с кроссдоменным запросомЯ расположил бекенд на одном сервере, а фронтэнд на другом

262