2012-05-23 20 views
5

我有一個基本上具有頁眉,頁腳和正文視圖的Web應用程序。我正在使用history.js庫和HTML5 pushstate來對網站進行Ajax化,但是我遇到的問題之一是將JavaScript插入DOM時運行嵌入式JavaScript。在通過AJAX加載的DOM中運行動態注入的javascript(嘗試使用history.js加載AJAX)

差不多我所有的JavaScript被包裹在jQuery的(函數(){...})(文件在準備裝載)

有誰知道處理一個很好的策略?謝謝!

回答

7

如果我理解你,你的「頁面」只是你動態加載的HTML容器。在該HTML中,您擁有目前不執行的JavaScript腳本塊。那是對的嗎?他們是否在頁面腳本或鏈接到新的腳本文件?

在任何情況下,我覺得這回答了你的問題:How do you execute a dynamically loaded JavaScript block?

我自己的想法:

除非你的容器是非常通用的,所以無法知道的JavaScript你可能需要,最簡單的方法可能是隻需手動將所有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

我想我只是找到了一個很好的答案: http://api.jquery.com/jQuery.ajax/ 的dataType配置屬性: 「」 HTML」 :將HTML作爲純文本返回;包含的腳本標記在ins時進行評估在DOM中進行。「 我會嘗試一下,但這聽起來就像我需要:) –

+0

這聽起來不錯,很容易。祝你好運! – jatrim

-1

使用.on,我也不打算解釋人該功能,但在幾句話的行爲:

通過對DOM發泡部件例如您綁定「onclick」事件到一個div您

工作可以設置一些或所有他的孩子有x性質