5

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

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

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

4

2 回答 2

7

如果我理解您,您的“页面”只是您动态加载的 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);

})();
于 2012-05-23T21:07:34.450 回答
-1

使用.on,我不打算解释该函数的所有行为,但只需几句话:

通过 dom 上的冒泡元素工作,例如,您将“onclick”绑定到一个 div,您可以将其设置为他的部分或全部孩子有 x 行为

于 2012-05-23T21:17:23.027 回答