2016-08-31 21 views
0

フォームを内部に含むモーダルボックスを(XHR要求を使用して)読み込むページがあります。HTML + Javascriptを動的に読み込むためのベストプラクティス

フォームは、検証を行うにして(別のXHRリクエストを使用して)、それを提出するHTMLタグ+いくつかのJavascriptで構成されています。

私はそれをやった、それがすでに動作しますが、スクリプトタグは、この単純化された例のように、モーダルの内側にあるため、結果のDOMは、醜いです:

<html> 
<head>...</head> 
<body> 
<div id="modal"> 
    <form>...</form> <!-- This is my dynamically loaded HTML --> 
    <script>...</script> <!-- This is the dynamically loaded JS --> 
</div> 
<script>...</script> <!-- My main scripts --> 
</body> 
</html> 

が、私はこのことについて2つの質問があります。

1)のベストプラクティスは、右body閉じ前に、すべてのJSコードを置くことですが、私は私の動的ロードを行うときに、私は、モーダルdivの内側にJSで終わります。 HTMLのみをdivにロードし、bodyの末尾にJSを挿入する効率的な方法はありますか?それのためのツールはありますか?それとも私はそれについて心配してはいけませんか?

2)私はjQueryを使用していますので、すべてのJSコードに$(document).ready()を使用しようとしますが、これをモーダルJSに使用すると、イベントは2回目にトリガーされないため実行されません。 laodingが完了した後、動的にロードされたJSを実行するために使用できるイベントはありますか?それとも私はそれを最後に置くべきですか?両方の質問へ

+0

私の[controverse technique](http://stackoverflow.com/questions/39022556/javascript-confusing-with-script-file-placing-place/39023042#39023042)をチェックアウトしてください。 –

答えて

0

回答:

私はあなたがモーダル内部DOMにJSスクリプトを挿入してはならない理由が表示されません。私はそれがあなたが注射されたすべてのスクリプトを置く世界的な場所と比べるとさらに良いと思う。このようにして、どんなモーダルがどのスクリプトを読み込むかが分かります。

また、2番目の問題も解決します。最初にDOMノードを挿入し、次にそれらのノードで動作する<script>要素を挿入すると、準備完了イベントを待つ必要はありません。私は、世界的にモーダルスクリプトが利用できたモーダルをロードし、その後ModalScript.initialize("#modal")ような何かをやっていると考えることができます

だけが、他の方法。

+0

実際、関連するDOMの近くにスクリプトタグを置くと、より複雑なページのデバッグに多くの助けになります。それが悪い習慣と見なされないならば、私はこのように物事を維持します、ありがとう! – Marcovecchio

0

、必要に応じてバンドルし、動的にロードするBrowserifyのようなフレームワーク(「遅延ロード」)のリソースを使用することができます。

Thisは良い例/チュートリアルです。

関連する問題