2015-02-23 5 views
0

Так я пытаюсь добавить JS-файл во время выполнения я иметь эту простую HTMLСинтаксическая ошибка при добавлении файла JS во время выполнения

<!doctype html> 
<head> 
    <meta charset="UTF-8"> 
    <title>test</title> 
    <script src="jquery.js" type="text/javascript" ></script> 
    <script src="main.js" type="text/javascript"></script> 
</head> 

<body onLoad="init();"> 
</body> 
</hmtl> 

И в главной функции у меня есть этот

function init() { 

    $.getScript("bots/test.js"); 
} 

I Я получаю синтаксическую ошибку в первой строке test.js которая cointains этой функции

function hello(){ 

    console.log("hello"); 
} 

Но дело в том, если я называю й e hello function в main.js после того, как файл test.js загружен, он работает. Итак, почему существует синтаксическая ошибка?

Если я включил test.js в html, ошибка также отсутствует.

Примечание: сообщение об ошибке не предотвращает ничего из того, что я могу сказать, что все еще работает.

EDIT: Сообщение об ошибке при хромом:

XMLHttpRequest cannot load file:///G:/tt/Desktop/black%20box/bots/test.js?_=1424695256510. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource. 

Чтобы ответить на некоторые вопросы, которые я использую событие клика на кнопку, чтобы вызвать «) привет (» функция, которая работает отлично (выходы привет в консоли и оленья кожа забросить любую ошибку).

+1

Предоставить сообщение об ошибке в самом вопросе. –

+0

сообщение об ошибке просто «синтаксическая ошибка» в строке 1 ничего больше, это в firefox – damoklesssss

+0

Какой браузер? Попробуйте использовать хром, обычно сообщение об ошибке более понятно. –

ответ

2

XMLHttpRequest не может загрузить файл: /// G:? /tt/Desktop/black%20box/bots/test.js _ = 1424695256510. Запросы на кросс-начало поддерживаются только для схем протокола: http, data, chrome, chrome-extension, https, chrome-extension-resource.

getScript загружает файлы через Ajax. Вы не можете делать Ajax в локальных файлах. Проведите тестирование на веб-сервере.

+0

Я планирую использовать этот локальный, так что мне просто нужно отказаться от getScript и загрузить файл без использования ajax? – damoklesssss

+1

Это был бы альтернативный подход, да. – Quentin

+0

Yep использует собственные методы для загрузки js-файла, теперь работает без ошибок. Но почему это работает раньше, если ajax не работает? – damoklesssss

-2

$.getScript использует ajax для асинхронного извлечения файла, затем выполняет его, он определяет функцию приветствия, но не вызывает его. Вы можете вызвать функцию в обработчике $.getScript успеха:

$.getScript('bots/test.js', function() { 
    hello(); 
}); 
+3

Но как это объяснит «синтаксическую ошибку»? –

+0

Проблема - это синтаксическая ошибка, вызванная политикой запроса перекрестного происхождения, а не вызываемой функцией. –

-2

Возможно, вам нужно добавить тэг <html> до <head>?

+1

Начальный тег для элемента HTML является необязательным. – Quentin

+0

@Quentin Я не знал, что –

+0

Хорошо, я не знал! – GalakFayyar

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