javascript - 在通过 AJAX 加载的 DOM 中运行动态注入(inject)的 javascript(尝试使用 history.js 对网站进行 ajax 化)

标签 javascript dom pushstate history.js html5-history

我有一个 Web 应用程序,它基本上具有页眉、页脚和正文 View 。我正在使用 history.js 库和 HTML5 pushstate 对网站进行 ajax 化,但我遇到的问题之一是在将 javascript 插入 DOM 时让嵌入式 javascript 运行。

几乎所有我的 javascript 都包含在 jQuery(function(){ ... })(文档就绪加载器)

有人知道处理这个问题的好策略吗?谢谢!

最佳答案

如果我理解您的意思,您的“页面”只是您正在动态加载的 HTML 的容器。在该 HTML 中,您有当前不执行的 JavaScript 脚本 block 。那是对的吗?它们是在页面脚本中还是在新脚本文件的链接中?

无论如何,我认为这回答了您的问题:How do you execute a dynamically loaded JavaScript block?

我自己的想法:

除非你的容器非常通用,所以不知道你可能需要什么 JavaScript,最简单的方法可能是手动将所有 JavaScript 附加到你的容器页面,以便它与容器一起加载,可能是缩小和连接到一个文件中。

如果您需要动态加载您的脚本,但您知道它们是什么,您可以使用 jQuery 使用 .getScript() 或 .ajax() 来实现。我认为此页面拼写得很好,http://www.electrictoolbox.com/jquery-dynamically-load-javascript-file/ .

同样,如果您在获取 html block 之前不知道需要什么脚本,您可能可以解析脚本链接的 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);

})();

关于javascript - 在通过 AJAX 加载的 DOM 中运行动态注入(inject)的 javascript(尝试使用 history.js 对网站进行 ajax 化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10727086/

相关文章:

javascript - JavaScript 有没有办法截取 silverlight 元素的屏幕截图?

javascript - jquery 这返回奇怪的响应

javascript - onSubmit 在 react-bootstrap 导航下拉菜单中不起作用

javascript - 如何在不指定标记名称的情况下读取 XML 中的子节点名称及其值?

javascript - 如果 popstate 事件来自 HTML5 pushstate 的后退或前进操作,我该如何检索?

single-page-application - 如何在 HATEOAS 服务器上实现深度链接客户端?

jquery - History.pushState 在浏览器后退按钮上中断

javascript - 如何使用 javascript API 获取观看次数最多的 youtube 视频?

javascript - 使用事件监听器(Javascript、jQuery)将 BG 颜色更改为随机颜色?

css - firefox 和 opera 是否通过 javascript 支持 zIndex 样式属性