2011-03-03 40 views
1

我正在使用http://code.google.com/p/tumblrbadge/中的一個小javascript thingy(應用程序?)將我最近的tumblog文章加載到我的網頁中。然而,當我使用JQuery加載AJAX的'tumblr'部分時,腳本不會被執行。我明白這是爲什麼,並且我需要在AJAX加載完成後在JavaScript文件中包含並執行它。我的問題是這樣的:我不完全理解tumblrbad​​ge代碼,並且當我加載腳本並在加載後調用tumblrBadge()時,它不會運行。如何修改tumblrbad​​ge代碼以允許它按需運行?修改Javascript以在AJAX加載後運行

所有這一切都在http://jquerytest.webs.com

+0

那麼,是不是$(document).ready()正好(它已經在.js文件中完成)? – Arda 2011-03-03 02:25:16

+0

我正面臨類似的情況,其中$(document).ready()在Safari中並不真正工作,但可以與其他瀏覽器一起使用。所以我很想知道這個問題的答案。 – 2011-03-03 02:32:34

+0

我根本沒有使用ready函數。如果代碼是使用AJAX加載的,那麼沒有eval()會工作嗎? – 2011-03-03 02:33:39

回答

1

它看起來像你的問題是,你的網站tumblr部分在腳本代碼沒有被執行託管。當您使用ajax將html插入頁面時,必須解析出任何腳本標記的內容並分別執行它們。

將tumblr標籤的內容插入到您的頁面之後,獲取其所有腳本標籤,並使用$("#contentOfTumblrTab script")並使用eval()評估它們的innerHTML

+0

這正是我的問題。這樣使用eval有什麼問題嗎?我已經看遍了,它是「壞」。 – 2011-03-06 01:45:28

+0

使用eval是javascript中的代碼異味,因爲它通常意味着您不知道「正確」的方式來執行某些操作,而且在某些情況下,它也可能不安全以評估字符串。然而,在這種情況下,沒關係。如果您想了解您的代碼如何抵禦一些JavaScript最佳做法,您還可以查看jslint(http://www.jslint.com/lint.html)。 – tilleryj 2011-03-08 03:45:22

0

嘗試$(window).onload而不是$(document).ready