我有一个基本上有页眉,页脚和正文视图的Web应用程序。我正在使用history.js库和HTML5 pushstate来开发网站,但我遇到的一个问题是在javascript插入DOM时运行嵌入式javascript。
几乎我所有的javascript都包含在jQuery中(function(){...})(文档就绪加载器)
有没有人知道处理这个问题的好策略?谢谢!
答案 0 :(得分: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);
})();
答案 1 :(得分:-1)
使用.on,我不会解释该函数的行为,但用几句话来说:
通过dom上的冒泡元素工作,例如你将“onclick”绑定到一个div,你可以设置为他的一些或所有孩子都有x行为