[英]Run dynamically injected javascript in DOM loaded via AJAX (attempting to ajaxify website with history.js)
我有一个本质上具有页眉,页脚和正文视图的Web应用程序。 我正在使用history.js库和HTML5 pushstate来进行网站废除,但是遇到的问题之一是当将JavaScript插入DOM时要运行嵌入式JavaScript。
我几乎所有的JavaScript都包裹在jQuery(function(){...})中(文档就绪加载程序)
有谁知道解决这个问题的好策略? 谢谢!
据我了解,您的“页面”只是动态加载HTML的容器。 在该HTML中,您具有当前不执行的JavaScript脚本块。 那是对的吗? 它们在页面脚本中还是在新脚本文件的链接中?
无论如何,我认为这可以回答您的问题: 如何执行动态加载的JavaScript块?
我自己的想法:
除非您的容器具有难以置信的通用性,因此不知道您可能需要什么JavaScript,否则最简单的方法可能就是将所有JavaScript手动附加到容器页面上,以便将其加载到容器中,并可能缩小并合并为一个容器文件。
如果您需要动态加载脚本,但是知道它们是什么,则可以使用jQuery使用.getScript()或.ajax()进行加载。 我以为该页面的拼写很好, 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);
})();
使用.on ,我不会解释该函数的行为,但只用几句话:
通过dom上的冒泡元素来工作,例如将“ onclick”绑定到div,您可以将其设置为某些或所有他的孩子有x行为
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.