2015-04-25 3 views
0
<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript" src="a.js"></script> 
</head> 
<body> 
<script> 
functionFromAJS(); 
</script> 
</body>  
</html> 

это работает нормально большую часть времени, но на производственном сервере его не 100%. В нем указано, что functionFromAJS() не существует, что нормально, если .js не загружается вовремя. Но что тогда делать?Внешний JS иногда не загружается вовремя?

+0

Вы пытались удалить избыток ''? – Xufox

+0

только опечатка. Значит ничего –

ответ

2

EDIT: Использование функции window.onload не должно различаться, пока скрипт, который вы встраиваете, загружается перед вызовом функции. Тогда файл a.js будет загружен до <script>functionFromAJS();</script> в любом случае, и вы должны иметь возможность выполнить функцию, если она существует.

Попробуйте использовать:

<script> 
    window.onload = function() { 
     functionFromAJS(); 
    }; 
</script> 

Так что функция не вызывается до того, как документ полностью загружен. Или, если вы используете JQuery вы можете использовать:

<script>  
    $(document).ready(function() { 
     functionFromAJS(); 
    }); 
</script> 
+0

эй, да, кажется, хорошо, buuut ... если я использую jQuery, ваш пример не будет работать, потому что если jQuery ITSELF не загружается? :) –

+0

Ну, со второй мыслью я считаю довольно странным, что вы испытываете эту проблему. Кто-то, пожалуйста, исправьте меня, если я ошибаюсь, но я считаю, что если вы используете , этот скрипт будет загружен перед любым кодом ниже, который он выполнит/загружаться. функции onload и (document) .ready ждут только до полной загрузки всех элементов DOM. Так что довольно странно, что у вас такие проблемы. Если файл и функция существуют, и вы вставляете JS-файл перед вызовом функции, он должен работать. – jimutt

+0

@jimutt: Да, сценарий будет загружен до продолжения разбора. Вызов функции позже не приведет к тому, что функция будет существовать, если загрузка не будет выполнена в первую очередь, и это единственная причина, по которой она не будет существовать. – Guffa

1

Если функция не существует, то это не вопрос файла не загружен во времени, то файл не загружается на все ,

Когда браузер сталкивается с тегом скрипта для загрузки файла, он прекращает разбор страницы до тех пор, пока файл не будет загружен или пока файл не будет загружен. functionFromAJS никогда не будет вызываться до того, как браузер завершит попытку загрузить файл.

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

Смежные вопросы