情况:我发送一个ajax请求,该请求返回包含要在其上设置事件处理程序的元素的HTML。设置这些元素的处理程序的代码包含在单独的javascript文件中。
我一直在使用以下代码通过编写<head
&gt;脚本来加载回调所需的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);
}
谢谢,Brian
答案 0 :(得分:1)
烨。您甚至可以在添加script
元素后立即删除它(尽管您可能希望将其保留以避免以后重新加载 - 例如,通过查看script
中的head
标记);显然只是添加它的行为是加载和解析代码所需的全部内容。 More here(该页面来自Prototype非官方wiki,但无论您是否使用Prototype,它都适用。)
答案 1 :(得分:1)
看起来你的jQuery看起来并不太糟糕,因为有一个函数live
专门处理这种情况。 live
函数将处理程序附加到现在和将来与选择器匹配的所有元素。因此,无论何时将新元素附加到页面,处理程序都将自动附加,而无需加载新脚本。
您可以在此处查看文档和示例:http://api.jquery.com/live/