Man*_*ion 3 javascript jquery deferred-loading asynchronous-javascript
我使用谷歌代码来推迟加载 javascript(谷歌页面)
但我有一些内联 javascript,例如:
<script type="text/javascript">
$(function () {
alert("please work");
});
</script>
Run Code Online (Sandbox Code Playgroud)
这给了我:
未捕获的 ReferenceError: $ 未定义
我想我需要一些函数,它是在加载 jQuery 并初始化我的内联 javascripts 之后触发的。但如果有另一种方式,我会很高兴。
编辑:
你们中的一些人完全没有话题。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>
Run Code Online (Sandbox Code Playgroud)
jQuery在加载之前您不能使用。如果您移动<script src="jquery.js" />页面底部的 ,则还必须移动其$(...)下方使用的所有行。
有一个棘手的解决方案,沿着这些路线:
1)在页面顶部定义几个变量:
var _jqq = [];
var $ = function(fn) {
_jqq.push(fn);
};
Run Code Online (Sandbox Code Playgroud)
2)在页面中间可以写:
$(function() {
alert("document ready callback #1");
});
$(function() {
alert("document ready callback #2");
});
Run Code Online (Sandbox Code Playgroud)
3) 在页面底部,包含 jQuery:
<script src="//code.jquery.com/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
4)最后:
$(function() {
$.each(_jqq, function(i, fn) {
fn();
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12469 次 |
| 最近记录: |