2010-12-11 18 views
0

私は、ウェブサイトのjavascriptを自動的に結合し、縮小するwebサービスを構築しています。ウェブ所有者は、ウェブサイトのヘッドに次のjsスニペットを挿入するだけで、ミニファイルを作成してヘッド要素に追加します。スクリプトを動的に挿入してすぐに実行する

私が見ている問題は、スクリプトが動的に追加されたときに、必ずしも身体の残りの部分より前に実行されるとは限らないということです。多くのサイトでは、本体が生成される前にヘッドスクリプトが実行されると予想されるため、これが問題です。

何かの前に動的に追加されたスクリプトを実行する方法はありますか?たぶん、ボディ全体を削除して、追加スクリプトがロードされた後に再度挿入するような回避策があるかもしれません。でも、それはかなりハッキリですね。

<script type="text/javascript"> 
    var minify_files = new Array(
     'domain.com/js/one.js', 
     'domain.com/js/two.js', 
     'domain.com/js/three.js' 
    ); 
</script> 
<script type="text/javascript" src="minifyservice.com/minify.js"></script> 
+0

実行する予定のスクリプトを関数内に記述し、その中から関数を呼び出すと、その関数が実行するスクリプトを挿入します。 – Babiker

+0

実行されるのは、 "minify_files"配列内のすべてのファイルを縮小して結合したものであるためです。このサービスのポイントは、サイトの所有者が上記のコードを埋め込んでいて、うまく機能することです。 – makeee

+0

あなたは最初に実行されるようにあなたのスクリプトが必要ですか?あなたのユーザーがページ上部の – user406905

答えて

0
<script type="text/javascript" src="minifyservice.com/minify.js"></script> 

は行くだろう返します。 minify.jsは次のような関数minify_filesを定義します。

未テスト。しかし、良いスタート地点でなければなりません。 document.writeのために、ページがロードされる前にスクリプトがロードされるのをブロックして保証しますが、ページのレンダリングが完了する前にのみ動作します。

0
  • 私はあなたが必要と/ユーザーが任意の他の資産の前にスクリプトタグ を配置 を依頼する必要があると思います。
  • スクリプト配列を クエリ文字列に配置します。
  • バックエンドサービスの組み合わせ、ユーザーのコード

    <script type="text/javascript"> 
        minify_files([ 
         'domain.com/js/one.js', 
         'domain.com/js/two.js', 
         'domain.com/js/three.js' 
        ]); 
    </script> 
    

    または類似したものは、おそらくより良い仕事とする前に、スクリプト

<script type="text/javascript" src="site.com/mini.js?script1&script2"></script>

関連する問題