2012-01-16 72 views
0

我遇到問題。 我從數據庫動態加載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上)

謝謝!

+0

我將添加一個演示,它將顯示與警報不同的一個示例,另一個不帶。 (如果它對任何人都不清楚) – kodkod 2012-01-16 08:20:08

+0

你怎麼實際得到'addJS'變量? 「addJS」中的腳本是否以特定的順序排列,即需要等待的腳本之前的腳本?或者不能保證? – bububaba 2012-01-16 09:13:09

+0

我得到客戶端的addJS(我不知道會發生什麼)。我不知道順序,但我認爲它會是異步的。我的目標確實是等待幾毫秒或一秒鐘,當我捕捉外部的JS(所以它會讓瀏覽器加載它,我想這就是問題) – kodkod 2012-01-16 09:18:49

回答

0

如果沒有任何ajax調用爲什麼不等待document.ready?這意味着頁面會被完全加載,並且所有東西都在DOM對象內。