2010-10-14 128 views
23

我有一個腳本,我希望在頁面加載之前運行。該腳本檢查變量的值,並根據值將用戶重定向到新頁面。如何在頁面開始加載之前運行jQuery或JavaScript

如果需要,我可以成功檢查變量並重定向,但頁面仍會加載並顯示空白頁面,但會很快重定向到其他頁面。在重定向之前,我不希望在頁面上顯示空白頁面。

謝謝 版

+1

如果您使用服務器端腳本(如php)來執行重定向,這不會成爲問題。 – Mischa 2010-10-14 05:03:35

+0

你現在怎麼做? – harto 2010-10-14 05:03:36

回答

6

也許你正在使用:

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

試試這個:

window.onload = function(){ } 
+0

是的我正在使用$(document).ready(function(){ //您的代碼在這裏 });此功能只。 有沒有可能做到這一點在JavaScript – Ver 2010-10-14 05:08:20

+0

'$(document).ready()'內的代碼是在您的頁面被讀取後運行,但是在其他資源(例如圖像)完成下載之前運行。在包裝'$(document).ready()'的腳本運行之前,您將*看到屏幕上的內容。 – Blackcoat 2010-10-14 05:10:21

6

如果你不希望任何重定向之前顯示,然後您將需要使用一些服務器端腳本來完成任務,然後才能提供頁面。當您的Javascript在客戶端上執行時,頁面已經開始加載。

如果Javascript是您唯一的選擇,您最好將您的腳本作爲文檔的<head>中包含的第一個.js文件。

除了使用Javascript,我建議在Apache或nginx服務器配置中設置重定向邏輯。

9
<head> 
    <script> 
    if(condition){ 
     window.location = "http://yournewlocation.com"; 
    } 
    </script> 
</head> 
<body> 
    ... 
</body> 

這將迫使狀況檢查和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"); 
6

不要使用$(文件)。就緒()只是把在S直接在頁面的頭部部分進行打折。頁面從頂部到底部處理,因此頂部的東西首先被處理。

1

這應該做的伎倆:

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

好運 )

1

嘗試卸載事件。當用戶離開頁面時,卸載事件被髮送到窗口元素。

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

隱藏與CSS的身體然後顯示在頁面加載後:

CSS:

html { visibility:hidden; } 

的Javascript

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

頁面將空白的去展示頁面加載時的所有內容,不閃光的內容,不看圖片加載等。

相關問題