你问的不太什么,而是一种替代方案是只包含脚本的身体结束,在结束</body>
标记之前。这将达到相同的结果,而不需要包含jQuery的精简版本。
document.ready函数的意义在于,它将在DOM准备好后调用,即在浏览器解析完所有html并且准备好用JavaScript处理之后。将JS代码放在主体的末尾可以达到同样的效果,因为浏览器在解析文档时遇到JavaScript,并且执行JS时,它可以访问任何已经解析过的DOM元素。
当我问过你的代码将如何执行的留言中提到这个想法,所以这里有一个简单的例子:
// CHANGE THE FOLLOWING:
$(document).ready(function() {
var myField = document.getElementById("someId");
alert(myField.value);
});
// TO BE
var myField = document.getElementById("someId");
alert(myField.value);
如果上述内嵌包括:(a脚本块内没关系,尽管)或者脚本标记包含的外部JS文件中,只要它位于主体的末尾。
它唯一的问题是,因为代码没有包含在一个函数中,它会创建全局变量 - 这是你想避免的一般规则,因为如果将来你将包含其他外部库定义具有相同名称的变量。 - 周围的匿名函数的那些使它成为一个函数表达式,而不是一个函数声明(这意味着它不
(function() {
var x = "these variables are not global",
myField = document.getElementById("someId");
alert(myField.value);
function test() {
alert("this function isn't global either");
}
test();
})();
注意额外的括号:您可以通过在一个立即调用匿名函数表达式包装你的代码避免这个问题不需要名称),并且最后的那个会立即调用该函数。
只需在您正在阅读的堆栈溢出页面上查看页面源代码,就可以看到将JS放在主体末端的实际示例。
当你压缩缩小版本时,它变成32kB btw –
请问你的压缩方式是什么?我猜32kb是相对可接受的比原94.8k –
您可以配置您的服务器返回的内容使用gzip编码在可用或选择几个CDN托管解决方案之一:http://docs.jquery.com/Downloading_jQuery –