2012-08-11 41 views
1

我有顯示飼料FeedBurner的腳本,它看起來像這樣:如何加載腳本文件並執行它?

<script src="http://feeds.feedburner.com/cnn/HIkg?format=sigpro" type="text/javascript" ></script> 

我希望加載這個腳本這是一個不同的HTML頁面上,所以基本上我使用加載HTML文件,這個腳本在它:

$('#' + items[i]).load('content/' + items[i] + '.html'); 

這段代碼確實加載了html頁面,但腳本沒有執行(工作)。如何讓腳本在加載後工作?

回答

1

可以使用$.getScript()效用函數:

負荷使用HTTP GET請求的服務器的JavaScript文件,然後執行它。

$.getScript("/test.js") 
+0

+1。我認爲它必須在url中指定一個可能的選擇器,因爲這會阻止腳本在使用load()時執行。只是使用'getScript()'聽起來像是一個很好的計劃。 – Nope 2012-08-11 07:48:20

+0

但腳本駐留在HTML頁面,它不是孤立的somescript.js而是它的內容somepage.html(我想保持它的方式..) – Youss 2012-08-11 07:51:34

+0

我沒有控制腳本,如果你看看它你會看到一個URL到谷歌服務器(feedburner),這意味着我不能命名它something.js – Youss 2012-08-11 07:56:06

2

按照documentation

腳本執行
當使用URL不具有後綴 選擇表達調用.load()時,內容被傳遞到.HTML( )在刪除腳本 之前。這會在放棄 之前執行腳本塊。如果使用附加到 URL的選擇器表達式調用.load(),但是,在DOM被更新爲 之前刪除了腳本,因此不會執行。

如果你的url只是一個沒有指定選擇器的普通url,而不是在腳本被移除之前執行。

檢查items[i]的值,並檢查它是否是不帶選擇器的普通網址。

如果URL看起來不錯,您可能會遇到跨邊界腳本問題。該文件還提到:

由於瀏覽器的安全限制,大多數「Ajax」的請求都受到 到same origin policy;該請求無法成功檢索來自不同域,子域或協議的 數據。

如果可能,但我仍然會建議任何腳本在外部文件中,因爲這是很好的做法,不會混亂html。然後,您可以按照Raminson的推薦使用.getScript()

+0

我剛剛意識到我不熟悉我正在工作的腳本(由別人寫的腳本)你是對的我想,問題可能在腳本的其他地方.. – Youss 2012-08-11 08:06:08

+0

@Youss:你可以在調試工具中檢查控制檯輸出,例如:FireBug for FF或Chrome和IE中的內置調試工具。我認爲使用默認熱鍵F12打開調試器工具。 – Nope 2012-08-11 08:11:00

+0

@FrançoisWahl+1的有用評論。 – undefined 2012-08-11 08:19:48

相關問題