如何在页面开始加载之前运行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 });