window.load和document.ready的Javascript代码可用性
我需要一个需要在document.ready上执行并可用于window.onload函数的函数 我该怎么做window.load和document.ready的Javascript代码可用性,javascript,jquery,Javascript,Jquery,我需要一个需要在document.ready上执行并可用于window.onload函数的函数 我该怎么做 $(document).ready(function someFunction() { execute something and pass the results to window.load } ); $(window).load(Need results of somefunction); 将function()参数传递给$(document).ready(fn)等对
$(document).ready(function someFunction() {
execute something and pass the results to window.load
}
);
$(window).load(Need results of somefunction);
将
function()
参数传递给$(document).ready(fn)
等对象时,实际上是在创建一个未命名函数,一个匿名函数。因此,如果希望对$(document.ready
和$(window.load)获得相同的结果,可以创建一个命名函数(如果希望共享函数本身):
既然我发现我首先误解了你的问题,那就让我来解决吧
在两个函数的作用域中都有一个变量将使它们都可以使用它。因此,由于在全局名称空间中有一个变量不是一个好的做法,因此我们应该使用一个未命名的函数将两个函数包装在其中:
(function(){
var accessible_var;
$(document).ready( function() {
accessible_var = "passed to load handler";
} );
$(window).load( function() {
console.log(accessible_var);
} );
})();
您必须小心这两个处理程序强>
document.ready
将在所有元素就位时触发,它们可以在JS代码中引用,但不一定加载内容
但是,窗口.load
将等待页面完全加载,包括内部框架、图像等
警告-如果您想使用图像的高度、宽度属性,则document.ready是一个交易制动器
(如本文所述)您可以通过将函数调用的结果分配给作用域中的某个变量来共享该结果
(function(){
var result;
$(document).ready(function(){
result = 'something';
});
$(window).load(function() {
console.log(result); //something
});
}());
由于需要在dom就绪时执行某些操作,然后在窗口加载时访问它,所以将窗口加载绑定方法嵌套在dom就绪方法中
$(document).ready(function () {
// do something
var somevar = "Hello World!";
$(window).on("load", function () {
console.log(somevar); // Hello World!;
});
});
您需要某个函数的结果,还是某个函数本身才能在window.load中可用?我的意思是您需要传递函数本身,而不是其调用的结果。我非常累,抱歉:Dit不必是未命名的函数,如OP的示例中所示。当然是语义学:p
$(document).ready(function () {
// do something
var somevar = "Hello World!";
$(window).on("load", function () {
console.log(somevar); // Hello World!;
});
});