如何在页面开始加载之前运行jQuery或JavaScript

我有一个脚本,我想在页面开始加载之前运行。 该脚本检查变量的值,并根据值将用户重定向到新页面。

我可以成功检查变量并在需要时重定向,但页面仍然会加载并显示空白页面,但随后会快速重定向到另一页面。 我不希望在重定向之前在页面上显示该空页面。

谢谢你,Ver

    ...  

这将强制在页面呈现任何内容之前检查条件和URL位置的更改。 值得注意的是,在调用jQuery库之前,你将特别想要这样做,这样你就可以避免所有的库加载。 有些人可能会争辩说,这将更好地放在一个包装器方法中,并且这样调用是这样的方法:

 function redirectHandler(condition, url){ if(condition){ window.location = url; }else{ return false; } } 

这样您就可以检查多个条件并根据它重定向到不同的位置:

 if(redirectHandler(nologgedin, "/login.php")||redirectHandler(adminuser, "/admin.php")); 

或者如果你只需要它只运行一次,但你喜欢在全局命名空间中没有任何东西:

 (function(condition, url){ if(condition)window.location=url; })(!loggedin, "/login.asp"); 

使用css隐藏正文,然后在加载页面后显示它:

CSS:

 html { visibility:hidden; } 

使用Javascript

 $(document).ready(function() { document.getElementsByTagName("html")[0].style.visibility = "visible"; }); 

页面将从空白变为显示加载页面时的所有内容,没有内容闪烁,没有观看图像加载等。

不要使用$(document).ready()只是将脚本直接放在页面的head部分。 页面从上到下进行处理,因此首先处理顶部的内容。

如果在重定向之前不想显示任何内容,则需要使用某些服务器端脚本来在提供页面之前完成任务。 在您的Javascript在客户端执行时,页面已经开始加载。

如果Javascript是您唯一的选择,那么最好的方法是使您的脚本成为文档中包含的第一个.js文件。

我推荐在Apache或nginx服务器配置中设置重定向逻辑,而不是Javascript。

  • Apache的mod_rewrite文档
  • nginx的HttpRewriteModule文档

也许你正在使用:

 $(document).ready(function(){ // Your code here }); 

试试这个:

 window.onload = function(){ } 

这应该是诀窍:

 window.onload = function(event) { event.stopPropagation(true); window.location.href="http://www.google.com"; }; 

祝好运 ;)

尝试卸载事件。 当用户离开页面时,卸载事件被发送到窗口元素。

 $( window ).unload(function() { //do something });