微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在通过AJAX加载的DOM中运行动态注入的javascript(尝试使用history.js ajaxify网站)

我有一个基本上有页眉,页脚和正文视图的Web应用程序.我正在使用history.js库和 HTML5 pushstate来开发网站,但我遇到的一个问题是在javascript插入DOM时运行嵌入式javascript.

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

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

解决方法

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

})();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐