2012-01-16 10 views
0

私には問題があります。 私は動的にjavascriptコードをデータベースからdivにロードしています(実際にはどのjavascriptコードでも可能です)。 javascriptの1つは外部のjavascriptで、もう1つは外部の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をロードしていないので、テーブルからは機能しませんので、私が達成しようとしているものの例です。 私が試したソリューションの1つは、setTimeoutを使って、各セクションをその上でeval'ingし、各インターラクションの間に待っていることです。 (それも失敗した)。

UPDATE OKだから私は例と2の動作リンクを作成しました http://getryk.com/test.phphttp://getryk.com/test1.php(あなたはfoo.barアラートを取得する最後の数ミリ秒待つ場合)は、foo.barの警告を取得することはありません)

UPDATE 2012年1月17日 私は配列に各スクリプトを入れているソリューションを持っているし、私は(置くことができないそれらを一つずつ(コメントのリンクをたどっを実行するためにタイマーを構築してきました2つ以上のハイパーリンク;()上のスクリプト。ロード)

ありがとう!

+0

アラートのないものとないものとの違いを示すデモを追加します。 (誰にもわからない場合) – kodkod

+0

実際に 'addJS'変数はどうやって取得できますか?スクリプトは 'addJS'で特定の順序、つまり待機する必要がある前の必須のものですか?それとも保証されていないのですか? – bububaba

+0

私はクライアントからaddJSを取得しています(何が入ってくるのかわかりません)。順序はわかりませんが、非同期であると仮定します。私の目標は本当にちょうど2ミリ秒または1秒待っているときに私は外部のJSをキャッチする(それはブラウザがそれをロードする時間を与えるだろうと思うthatsの問題thats) – kodkod

答えて

0

もし何かajaxが呼び出されなければ、なぜdocument.readyを待てばいいのですか?これは、ページが完全にロードされ、すべてがDOMオブジェクト内にあることを意味します。

関連する問題