繁体   English   中英

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

[英]Run dynamically injected javascript in DOM loaded via AJAX (attempting to ajaxify website with history.js)

我有一个本质上具有页眉,页脚和正文视图的Web应用程序。 我正在使用history.js库和HTML5 pushstate来进行网站废除,但是遇到的问题之一是当将JavaScript插入DOM时要运行嵌入式JavaScript。

我几乎所有的JavaScript都包裹在jQuery(function(){...})中(文档就绪加载程序)

有谁知道解决这个问题的好策略? 谢谢!

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

})();

使用.on ,我不会解释该函数的行为,但只用几句话:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM