2012-05-23 20 views
5

私は基本的にヘッダ、フッタ、ボディビューを持つWebアプリケーションを持っています。私はhistory.jsライブラリとHTML5 pushstateを使用して、ウェブサイトのajaxifyingに取り組んでいますが、私が経験している問題の1つは、javascriptがDOMに挿入されたときに埋め込まれたjavascriptを実行することです。AJAX経由でロードされたDOMに動的に注入されたjavascriptを実行します(history.jsでウェブサイトをajaxifyしようとしています)

ほとんどすべての私のjavascriptはjQueryのに包まれている(関数(){...})(ドキュメント上の対応ローダ)

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

答えて

7

あなたの「ページ」は、あなたが動的に読み込んでいるHTMLのコンテナです。そのHTML内には、現在実行していないJavaScriptスクリプトブロックがあります。あれは正しいですか?それらはページスクリプトか新しいスクリプトファイルへのリンクですか?あなたのコンテナが非常に一般的なものであり、そしてあなたが必要かもしれないものはJavaScriptを知ることはできませんが、最も簡単な方法は、おそらくない限り

How do you execute a dynamically loaded JavaScript block?

私自身の考え:いずれの場合で

は、私はこれがあなたの質問に答えると思いますすべてのJavaScriptをコンテナページに手動で追加するだけで、コンテナがロードされ、おそらく単一のファイルに縮小されて連結されます。

スクリプトを動的にロードする必要があるが、それらが何であるか分かっている場合は、.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); 

})(); 
+0

X振る舞いを持っている私は、私はちょうど良い答え見つけたと思う: http://api.jquery.com/jQuery.ajax/ dataTypeと設定プロパティ: 「」HTML」を:HTMLをプレーンテキストとして返します;インクルードされたスクリプトタグは、ins DOMで抹消されました。 " 私はそれを試してみるつもりですが、これはちょうど私が必要なもののように聞こえる:) –

+0

それは素敵で簡単に聞こえる。がんばろう! – jatrim

-1

使用.on、私はアルにその関数の動作を説明するつもりはなく、いくつかの言葉ではありません。たとえば、DOMの要素をバブリングを通じて

仕事あなたはDIVに「onclickの」バインドします彼の子供の一部またはすべてを設定することができます

関連する問題