在通过AJAX加载的DOM中运行动态注入的javascript(尝试使用历史记录ajax化网站.js)
Run dynamically injected javascript in DOM loaded via AJAX (attempting to ajaxify website with history.js)
我有一个Web应用程序,它基本上具有页眉,页脚和正文视图。我正在使用history.js库和HTML5 pushstate对网站进行ajaxization,但是我遇到的问题之一是在将javascript插入DOM时运行嵌入式javascript。
几乎所有的javascript都包装在jQuery(function(){ ... })(文档就绪加载器)中
有谁知道处理这个问题的好策略?谢谢!
如果我理解你,你的"页面"只是你动态加载的HTML的容器。在该 HTML 中,您有当前未执行的 JavaScript 脚本块。这是对的吗?它们是在页面脚本中还是指向新脚本文件的链接中?
无论如何,我认为这回答了你的问题:你如何执行动态加载的JavaScript块?
我自己的想法:
除非你的容器是非常通用的,所以不知道你可能需要什么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);
})();
使用 .on,我不打算解释该函数的行为,但用几句话:
通过 DOM 上的冒泡元素工作,例如,您将"onclick"绑定到一个div,您可以设置为他的部分或全部孩子有 X 行为
- window.location替换并传递URL历史记录条目中的变量
- Javascript历史记录转换为php行
- 浏览器何时记录历史记录
- 输入类型按钮返回历史记录并返回顶部
- HTML5历史记录-返回上一个完整页面按钮
- asp.net网站文件下载历史记录
- 使用Ajax的后退按钮历史记录,URL中没有散列
- 历史记录和通过JavaScript修改的HTML
- Javascript:历史记录未加载页面
- 通过js设置页面历史记录和页面内容
- 如果没有历史记录,我如何隐藏图像或按钮onclick=;历史.go(-1);
- 将HTML表单发布到iframe会导致浏览器历史记录出现问题
- 如何防止浏览器在历史记录中缓存HTML
- 如何将新的stateObject添加或附加到历史记录中
- 检查浏览器后退按钮历史记录
- React-router 在添加历史记录后不会渲染组件
- 如何返回可用的历史记录状态数
- 引导选项卡不适用于历史记录.返回选项
- 记录 iframe 的历史记录
- 计算历史记录中的页数