在渲染页面之前加载javascript?

我想在我的页面加载之前运行一些jquery代码。 我添加了一些用javascript更改css的类,当页面加载时我会在短时间内看到“旧”css。 有任何想法吗? 谢谢

我想在我的页面加载之前运行一些jquery代码。

这很容易做到; 这很有趣,因为很多时候,人们都试图以相反的方式去做。

当浏览器遇到script标记时,禁止使用几个特殊属性(以及支持它们的浏览器),页面的所有处理都会暂停,浏览器会将脚本交给JavaScript引擎。 仅在脚本完成时才继续处理页面。

因此,如果页面的head部分中有script标记,则可以通过document.write函数输出CSS类:

   Foo   

请注意,上面的some_condition只能依赖并引用文档中它上面的项目(因为浏览器还没有对文档的其余部分做任何事情,因为它正在等待查看什么document.write内容脚本将输出)。

实例 (刷新几次,一半是红色,一半是蓝色)。 它不使用jQuery,但你明白了。

假设您已在主体上使用onLoad事件或使用jQuery ready回调,您可以从style =“display:none;”开始 在你的根div上,做你的JS的东西,最后在你准备公开内容时在那个div上设置“display:block”。 瞧?

基本上它与实现加载器/微调器类似。 您向用户显示动画gif,当页面最终加载时,您将其删除。
在这种情况下,我们显示空白,而不是显示gif。

有多种方法可以实现这一结果。 在易用性和性能方面,有几个订购。

  1. 全局CSS规则
    隐藏全局CSS文件中的body

     body { display:none; } 

    文档完成加载后,切换显示:

     // Use 'load' instead of 'ready' cause the former will execute after DOM, CSS, JS, Images are done loading $(window).load(function(){ $(body).show(); }); 

    演示

  2. 带有div图层的封面
    使用位于页面顶部的div隐藏内容,稍后将其删除。

     div#page_loader { position: absolute; top: 0; bottom: 0; left: 0; right: 0; background-color: white; z-index: 100; } 

    演示

  3. JavaScript代码段
    在页面呈现之前隐藏body

      

    演示

如果您使用Modernizr ,您还可以利用其CSS类隐藏/显示内容,具体取决于用户的设备或浏览器。

虽然我不推荐它,它在页面顶部运行jQuery脚本,导致这会增加额外的负担,并延迟进一步的页面渲染。

在呈现页面之前删除css:

(我使用它来从表中删除Css突出显示,并使用WORKS!)

  

将您的代码准备好放入文档中。 在加载DOM之后和加载页面内容之前,其中的所有内容都将加载

 $(function(){ your code goes here... }); 

要么

 $(document).ready(function(){ your code goes here.. });