我遇到問題。 我從數據庫動態加載JavaScript代碼到一個div(可以通過真正的任何JavaScript代碼)。其中一個javascripts是外部javascript,另一個是它包含對外部javascript的調用,這意味着我需要等待外部JavaScript才能加載,然後才能調用該函數。Javascript - 評估加載外部JavaScript的幾個JavaScript需要等待
我的問題是,我不知道函數的名稱,或者我會手動調用它們。 下面是一個例子
<html>
<head>
</head>
<body>
<div id='testdiv'> </div>
<script type='text/javascript'>
var mydiv = document.getElementById('testdiv');
var addJS = '<script type="text/javascript">function testing() { alert("test"); }<\/script><script type="text/javascript">document.write("<script type=\'text/javascript\' src=external.js><\/script\>");<\/script><script type="text/javascript">call_too_external_function();<\/script>';
addJS = addJS.replace(new RegExp('<\/script>', 'g'),"");
addJS = addJS.replace(new RegExp('<script type="text/javascript">', 'g'),"");
var tmp = document.write;
document.write = function() {
//catching the document write and evaling the content of the script
//but still call_too_external_function is undefined..
var justtest = [].concat.apply([], arguments).join('');
var mysrc = jQuery(justtest).attr('src');
jQuery("head").append(justtest);
alert('need to wait!!!');
//IF this alert exists and i wait a few milliseconds to click it call_too_external_function will work
//IF i comment the alert out call_too_external_function will be undefined.
//IS THERE A WAY TO PAUSE HERE untill this is loaded?
}
eval(addJS);
document.write = tmp;
</script>
</body>
</html>
我的主要問題是,我不知道什麼是addJS。
我希望這是足夠具體的獲得幫助,我真的很感激它。 如果有更多的信息可以給我,請讓我知道。 請注意,我沒有在上面的例子中加載jQuery,所以它不會在表格中工作,它只是我想要完成的一個例子。 我嘗試過的解決方案之一是通過setTimeout來完成每個部分的每個部分,並在每個部分之間等待。 (它也失敗了)。
UPDATE 行,所以我已經創建了例如2個工作環節 http://getryk.com/test.php(如果你等到最後幾毫秒,你會得到foo.bar警報) http://getryk.com/test1.php(你不會得到foo.bar警報)
UPDATE 2012年1月17日 我有一個解決辦法我把每個腳本到一個數組,然後我創建一個計時器,一個運行它們一個(隨後的評論的鏈接(不能放超過2個超鏈接;()在script.onload上)
謝謝!
我將添加一個演示,它將顯示與警報不同的一個示例,另一個不帶。 (如果它對任何人都不清楚) – kodkod 2012-01-16 08:20:08
你怎麼實際得到'addJS'變量? 「addJS」中的腳本是否以特定的順序排列,即需要等待的腳本之前的腳本?或者不能保證? – bububaba 2012-01-16 09:13:09
我得到客戶端的addJS(我不知道會發生什麼)。我不知道順序,但我認爲它會是異步的。我的目標確實是等待幾毫秒或一秒鐘,當我捕捉外部的JS(所以它會讓瀏覽器加載它,我想這就是問題) – kodkod 2012-01-16 09:18:49