javascript - 延迟加载 JavaScript - 未捕获的 ReferenceError : $ is not defined

标签 javascript jquery deferred-loading asynchronous-javascript

我使用谷歌代码来延迟加载 javascript ( google pages )

但我有一些内联 javascript,例如:

<script type="text/javascript">
$(function () {
    alert("please work");
});
</script>

这给了我:

Uncaught ReferenceError: $ is not defined

我想我需要一些函数,它是在加载 jQuery 并初始化我的内联 javascript 后触发的。但如果有其他方法,我会很高兴。

编辑:

你们中的一些人完全没有话题。 Mahesh Sapkal 很接近。

使用这段代码我没有错误,但仍然不起作用

<head>
    <script type="text/javascript">
        var MhInit = NULL;

        // Add a script element as a child of the body
        function downloadJSAtOnload() {
            var element = document.createElement("script");
            MhInit = element.src = "my_packed_scripts.js";
            document.body.appendChild(element);
        }

        // Check for browser support of event handling capability
         if (window.addEventListener)
            window.addEventListener("load", downloadJSAtOnload, false);
         else if (window.attachEvent)
             window.attachEvent("onload", downloadJSAtOnload);
         else window.onload = downloadJSAtOnload;
    </script>

</head>
<body>
    <script type="text/javascript">
        MhInit.onload = function() {
            console.debug("here");
        };
    </script>
</body>

最佳答案

您不能使用 jQuery在加载之前。如果你移动 <script src="jquery.js" />在页面底部,您还必须移动所有使用 $(...) 的行在它下面。

有一个棘手的解决方案,遵循以下思路:

1) 在页面顶部定义几个变量:

var _jqq = [];
var $ = function(fn) {
    _jqq.push(fn);
};

2) 在页面中间你可以写:

$(function() {
    alert("document ready callback #1");
});
$(function() {
    alert("document ready callback #2");
});

3) 在页面底部,包括 jQuery:

<script src="//code.jquery.com/jquery.min.js"></script>

4) 最后:

$(function() {
    $.each(_jqq, function(i, fn) {
        fn();
    });
});

Demo

关于javascript - 延迟加载 JavaScript - 未捕获的 ReferenceError : $ is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21013554/

相关文章:

Javascript:有效地比较两个整数数组

Javascript/JQUery 动态变量访问

jquery - 如何重置 ajax 的先前响应并在每次点击时加载当前响应?

jquery $.post 获取从方法返回的字符串

javascript - 模块是否会阻止使用 DOMContentLoaded 监听器的需要?

javascript - Defer 没有更快地加载页面

javascript - 在 Javascript 中查找对象

javascript - Javascript 和 Socket.io 中的同步

javascript - 如何使用html webpack插件将脚本标签放在样式标签之前

javascript - 为什么 while 循环中的这个条件会像循环体的一部分一样被执行?