2011-04-11 66 views
3

我在我的頁面中嵌入了美味的Feed。當我在div中添加腳本標記時,它顯然會在我的JS的其餘部分(位於頁面底部)之前加載。我想在所有其他js加載後,將此腳本加載到指定的div中。動態加載外部JS並將響應寫入div

我已經試過getScript加入的功能,但它肯定打破了,當我使用它以.html()的頁面:

$('#delicious').html(function(){ 
$.getScript("http://feeds.delicious.com/v2/js/bayonnebridge?title=My%20Delicious%20Bookmarks&icon=m&count=5&sort=date&tags&extended&name&showadd"); 
}); 

我似乎無法環繞我怎樣才能打印我的頭將該文件的結果放入#delicious div。

回答

3

如果要在div中顯示腳本,是不是應該使用回調函數?

$.getScript("http://feeds.delicious.com/v2/js/bayonnebridge?title=My%20Delicious%20Bookmarks&icon=m&count=5&sort=date&tags&extended&name&showadd", 
      function(data){ 
       $('#delicious').html(data); 
      }); 

$.getScript()結果是XMLHTTPRequest對象,好像你想要的響應文字。

此外,它看起來像來自您提供的URL的響應嘗試將腳本寫入文檔,從而覆蓋您的所有頁面內容。這是您可能會考慮使用iframe並將此URL設置爲源的問題。

我也似乎得到不同的行爲,具體取決於腳本是加載跨域還是來自同一個域 - 我不太確定該做什麼,因爲getScript()應該工作跨域。

+0

是的,它讓我非常困惑。將腳本內聯運行完美(不會覆蓋整個頁面),我會假設getscript的表現會類似。我可能只需要表現出色。 – 2011-04-11 20:41:39

1

這聽起來像你想使用類似窗口加載事件的東西。嘗試添加看起來像這樣的處理程序:

$(window).load(function() { 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = "http://feeds.delicious.com/v2/js/bayonnebridge?title=My%20Delicious%20Bookmarks&icon=m&count=5&sort=date&tags&extended&name&showadd"; 
    $('#delicious').append(script); 
}); 

查看jQuery .load() API瞭解更多信息。

+0

這產生了相同的結果 - 頁面加載,但是當它碰到這個js時,它重新加載整個頁面並嘗試用url填充它。太奇怪了。 – 2011-04-11 20:21:25

+0

我忽略了你的.html()的使用;你肯定需要響應,並可以像例子一樣動態地追加腳本。 (然而,no.good.at.coding似乎有你的答案。)祝你好運! – Chocula 2011-04-11 20:53:36

+0

這個帖子可能對您有所幫助:http://stackoverflow.com/questions/4520440/javascript-document-write-overwriting-page – Chocula 2011-04-11 21:12:04