2010-04-27 48 views
0

情況:我發送一個ajax請求,返回包含需要設置事件處理程序的元素的HTML。爲這些元素設置處理程序的代碼包含在一個單獨的JavaScript文件中。在ajax回調中加載javascripts

我一直在使用下面的代碼通過腳本編寫<head>標籤來加載回調中所需的js文件。到目前爲止我還沒有遇到問題,但是想知道這是否是一種安全可靠的方法(特別是跨瀏覽器)。

function ajax_callback(response) { 
    document.getElementById('dom_id_to_update').innerHTML = response; 
    import_js('/path/to/js/file/'); 
} 

function import_js(src) { 
    var scriptElem = document.createElement('script'); 
    scriptElem.setAttribute('src',src); 
    scriptElem.setAttribute('type','text/javascript'); 
    document.getElementsByTagName('head')[0].appendChild(scriptElem); 
} 

感謝布

回答

1

是啊。您甚至可以在添加元素後立即刪除script元素(儘管您可能希望保留它以避免稍後重新加載  —,例如通過查看head中的script標記);顯然只是添加它的行爲就是加載和解析代碼所需的全部內容。 More here(該頁面來自原型非官方wiki,但無論您是否使用Prototype,它都適用)。

1

它看起來不像你使用的jQuery太糟糕了,因爲有一個函數live,專門處理這種情況。 live函數將一個處理程序附加到現在和將來與選擇器匹配的所有元素。因此,無論何時將新元素附加到頁面上,處理程序都會自動附加,而無需加載新腳本。

您可以在這裏看到的文檔和示例:http://api.jquery.com/live/

+0

他們得* A *處理器連接,但想必不是* *右邊一個。我假設他有一個*理由*,他必須加載一個外部腳本,而不是像現有的腳本那樣僅僅用'live'(或者任何其他形式的事件委託;它不是jQuery獨有的)引用函數, 。 – 2010-04-27 20:55:58