2015-02-23 79 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"); 
} 

我我在test.js的第一線,cointains該功能得到一個語法錯誤

function hello(){ 

    console.log("hello"); 
} 

但事實是,如果我叫個在確認test.js文件被加載後,main.js中的hello函數會起作用。那麼爲什麼會出現語法錯誤?

如果我在html中包含test.js,那麼錯誤並不存在。

注意:該錯誤消息不能阻止任何東西,我可以告訴一切仍然有效。

編輯:

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. 

回答一些問題,我使用的是click事件上的一個按鈕來調用「你好()」函數,它工作正常(輸出你好控制檯和犯規:在Chrome瀏覽器的錯誤信息拋出任何錯誤)。

+1

提供有問題的錯誤信息本身。 – 2015-02-23 12:36:31

+0

錯誤信息只是在第1行的「語法錯誤」沒有別的,這是在Firefox中 – damoklesssss 2015-02-23 12:37:59

+0

哪個瀏覽器?嘗試使用chrome,通常錯誤信息更清晰 – 2015-02-23 12:38:39

回答

2

的XMLHttpRequest無法加載文件:/// G:/tt/Desktop/black%20box/bots/test.js _ = 1424695256510。協議方案僅支持交叉源請求:http,data,chrome,chrome-extension,https,chrome-extension-resource。

getScript通過Ajax加載文件。你不能在本地文件上執行Ajax。在網絡服務器上進行測試。

+0

我打算使用這個localy,所以我只需要刪除getScript,並加載文件而不使用ajax? – damoklesssss 2015-02-23 12:46:42

+1

這是一種替代方法,是的。 – Quentin 2015-02-23 12:47:07

+0

是使用本地方法來加載js文件,現在可以無誤地運行。但是,如果ajax不起作用,爲什麼還會起作用? – damoklesssss 2015-02-23 12:48:54

-2

$.getScript使用ajax異步檢索文件,然後執行它,它定義了一個hello函數,但沒有調用它。你可以調用該函數在$.getScript成功處理程序:

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

但是,這將如何解釋'語法錯誤'? – 2015-02-23 12:43:00

+0

問題是由交叉源請求策略導致的語法錯誤,而不是函數未被調用。 – 2015-02-23 12:49:34

-2

也許您應該在您的<head>之前添加<html>標籤?

+1

HTML元素的開始標記是可選的。 – Quentin 2015-02-23 12:47:27

+0

@Quentin我不知道 – 2015-02-23 12:48:43

+0

好吧,我不知道! – GalakFayyar 2015-02-23 12:49:08