5

基本的にヘッダー、フッター、ボディビューを持つWebアプリケーションがあります。history.jsライブラリとHTML5プッシュステートを使用してWebサイトの調整に取り組んでいますが、発生している問題の1つは、JavaScriptがDOMに挿入されたときに埋め込みJavaScriptを実行することです。

ほとんどすべてのJavaScriptはjQuery(function(){...})(ドキュメントオンレディローダー)でラップされています

誰かがこれに対処するための良い戦略を知っていますか?ありがとう!

4

2 に答える 2

7

私があなたを理解しているなら、あなたの「ページ」はあなたが動的にロードしているHTMLの単なるコンテナです。そのHTML内には、現在実行されていないJavaScriptスクリプトブロックがあります。あれは正しいですか?それらはページスクリプトまたは新しいスクリプトファイルへのリンクにありますか?

いずれにせよ、これはあなたの質問に答えると思います:動的にロードされたJavaScriptブロックをどのように実行しますか?

私自身の考え:

コンテナが非常に一般的で、必要なJavaScriptがわからない場合を除いて、最も簡単な方法は、JavaScriptをすべて手動でコンテナページに添付することです。これにより、コンテナが読み込まれ、最小化されて1つに連結されます。ファイル。

スクリプトを動的にロードする必要があるが、スクリプトが何であるかがわかっている場合は、.getScript()または.ajax()を使用してjQueryでロードできます。このページは、 http: //www.electrictoolbox.com/jquery-dynamically-load-javascript-file/のようにうまく綴られていると思いました。

同様に、htmlブロックを取得するまで必要なスクリプトがわからない場合は、おそらくhtmlを解析してスクリプトリンクを探し、ページに追加された新しいスクリプト要素を介して手動で添付することができます。例として、以下のスクリプトは、jQueryがまだ存在しない場合、ページに追加します。

(function () {

    if (typeof(jQuery) == "undefined") {
        var headID = document.getElementsByTagName("head")[0];         
        var newScript = document.createElement('script');
        newScript.type = 'text/javascript';
        newScript.id = 'myjQuery';
        newScript.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js';
        headID.appendChild(newScript);
    }

    window.addEventListener('load', function (e)  {

        //make jQuery calls here.

    }, false);

})();
于 2012-05-23T21:07:34.450 に答える
-1

.onを使用します。その関数の動作については説明しませんが、 簡単に説明します。

domのバブリング要素を処理します。たとえば、「onclick」をdivにバインドすると、彼の子の一部またはすべてにxの動作を設定できます。

于 2012-05-23T21:17:23.027 に答える