2011-07-27 117 views
2

所以我需要動態調用並執行從外部php文件生成的javascript代碼。這是我有:動態地包含外部Javascript文件

<script type="text/javascript"> 
id = <some id calculation>; 
var code_url = 'http://example.com/javascript.php?id=' + id; // this generates the javascript desired 

var code_div = document.getElementById("code_div"); // where I want to insert the JS 
var fileref=document.createElement('script'); 
fileref.setAttribute("type","text/javascript"); 
fileref.setAttribute("src", code_url); 
code_div.appendChild(fileref); 
} 
</script> 

現在div與JavaScript鏈接確實顯示,但它似乎並沒有執行。我嘗試瞭解StackOverflow和其他地方的其他類似問題,但是就它而言,這一點很重要。任何想法爲什麼它沒有執行?

更新:修正缺少的報價。另外我應該提到我把代碼放在了內部。我沒有訪問我的情況頭上,我需要插入分析代碼

+2

如果這是你必須真的是,那麼DIV不會顯示爲腳本錯誤會在同一行,因爲你忘收盤報價爲字符串。 – Quentin

+0

哦,沒關係......當我編輯腳本來發布它時,這是錯誤的。 –

回答

2

修復錯誤(如缺少函數聲明,在你的代碼收盤後報價),請確保您的code_url引用了具有函數調用事件的頁面;

例:

function needToExecute() { 
    ... 
} 

needToExecute(); 
+0

謝謝。試過,並沒有奏效。不知道如果我做錯了什麼,但這是它吐出的輸出: '

' 注意:我忘了提及我將動態id附加到URL。應該不會對JavaScript調用產生影響嗎? 如果我在單獨的頁面上運行javascript,它會生成正確的輸出 –

+0

你能給我一個'code_url'的確切輸出嗎? –

+0

當然...這是我的簡單嘗試。它工作,如果我直接去的URL。 '' –

3

的代碼應該引起腳本元素的代碼被執行(一次上線1失蹤報價添加),你確定那正是你必須在你的頁面?例如以下工作:

window.onload = function() { 
    var s = document.createElement('script'); 
    s.type = 'text/javascript'; 
    s.src = '_foo.js'; 
    document.body.appendChild(s); 
} 

_foo.js

alert('loaded'); 
+0

謝謝。嘗試了window.onload。如果我將alert()放在函數中,它會執行,並且_foo.js單獨執行。我應該注意到我正在向javascript網址添加動態ID,忘記提及這一點。它會產生問題嗎? 我得到最終的輸出是 '

' –

+0

添加一個搜索字符串的URL應該有比可能影響到資源的緩存其他瀏覽器沒有任何影響。 – RobG