Javascript 页面打开后立即启动脚本

Javascript 页面打开后立即启动脚本,javascript,jquery,Javascript,Jquery,我有一个jquery脚本,在滚动页面时将元素更改为fixed 问题是,在页面完全加载之前,脚本无法工作,并且可能需要一些时间 有没有一种方法可以在用户进入页面后立即启动脚本,而不必等到加载完成 <script type='text/javascript'>//<![CDATA[ $(window).load(function(){ var menuOffset = $('#ribbonmenu')[0].offsetTop; $(document).bind('ready s

我有一个jquery脚本,在滚动页面时将元素更改为fixed

问题是,在页面完全加载之前,脚本无法工作,并且可能需要一些时间

有没有一种方法可以在用户进入页面后立即启动脚本,而不必等到加载完成

<script type='text/javascript'>//<![CDATA[
$(window).load(function(){
var menuOffset = $('#ribbonmenu')[0].offsetTop;

$(document).bind('ready scroll', function() {
    var docScroll = $(document).scrollTop();

    if (docScroll >= menuOffset) {
        $('#ribbonmenu').addClass('fixed');
    } else {
        $('#ribbonmenu').removeClass('fixed');
    }

});
});//]]>
</script>
而不是使用$window.load 您可以尝试使用$document.ready

它将更快地加载,但正如其他人所提到的,没有一种方法可以让它立即加载并仍然工作。这是因为未来的元素尚未加载。

是的,将其放在外部:

$window.loadfunction{

这将回答您关于希望脚本立即运行的问题,但是除了将其移到加载函数之外还有其他问题

正如Marc B所说,如果调用HTML元素的脚本在加载函数之外,它将不会运行,因为在很短的一段时间内,HTML没有加载,脚本将看不到HTML


这将导致一个错误,从而使您的脚本无法正常工作。因此,您应该将其保留在加载函数中,而不是寻找其他方法来加快服务器/脚本的速度。

否,因为可能在脚本开始运行时,您的ribbonmenu html尚未加载/解析,因此脚本将失败。Javascript无法通过时间旅行查看元素将来是否存在。它只会看到元素现在不存在,然后退出。如果需要DOM的一部分,则必须等待。在标记之前添加脚本,或者使用。他不想等待页面加载。在页面加载之前,他无法在元素上运行脚本,并且。ready executes before.loadI理解这一点,但您是否认为使用ready而不是load会使他的脚本运行得更快?不是更快,而是更快。@Nicolas对于大图像或较慢的internet连接,可以很容易地看出差异。ready事件发生在文档完成加载并解析标记后,而load也会等待r任何链接媒体。脚本只需要准备好文档。我已经参考了Marc B的评论。如果我将脚本放在html元素之后会怎么样?应该先加载元素,然后加载脚本?