15918
13130
這個問題的答案是社區的努力。編輯現有答案以改善此職位。它目前不接受新的答案或互動。
如何使用jQuery或純JavaScript將用戶從一個頁面重定向到另一頁面? 
1個
2
下一個
一個不只是簡單地使用jQuery進行重定向
jQuery是不必要的,並且window.location.replace(...)將最好地模擬HTTP重定向。
window.location.replace(...)優於使用window.location.href,因為replace()不會將原始頁面保留在會話歷史記錄中,這意味著用戶將不會陷入永無休止的後台工作中,按鈕慘敗。
如果要模擬某人單擊鏈接,請使用
location.href
如果要模擬HTTP重定向,請使用location.replace
例如:
//與HTTP重定向類似的行為
window.location.replace(“ http://stackoverflow.com”);
//與點擊鏈接類似的行為
window.location.href =“ http://stackoverflow.com”;
|
警告:僅作為可能的解決方案提供此答案;它顯然不是最好的解決方案,因為它需要jQuery。相反,您更喜歡純JavaScript解決方案。
$ {location).attr('href','http://stackoverflow.com')
|
重定向頁面的標準“香草” JavaScript方法
window.location.href ='newPage.html';
或更簡單地說:(因為窗口是“全局”)
location.href ='newPage.html';
如果您在這裡是因為重定向時丟失了HTTP_REFERER,請繼續閱讀:
(否則忽略最後一部分)
以下部分適用於那些使用HTTP_REFERER作為許多安全措施之一的人(儘管這不是很好的保護措施)。如果您使用的是Internet Explorer 8或更低版本,則使用任何形式的JavaScript頁面重定向(location.href等)時這些變量都會丟失。
下面我們將為IE8及更低版本實現替代方案,以免丟失HTTP_REFERER。否則,您幾乎總是可以只使用window.location.href。
針對HTTP_REFERER(URL粘貼,會話等)進行測試可以幫助判斷請求是否合法。
(請注意:還有一些方法可以解決/欺騙這些引薦來源網址,如評論中的下垂鏈接所示)
簡單的跨瀏覽器測試解決方案(適用於Internet Explorer 9+和所有其他瀏覽器的window.location.href版本)
用法:redirect('anotherpage.aspx');
函數重定向(url){
var ua = navigator.userAgent.toLowerCase(),
isIE = ua.indexOf('msie')!== -1,
版本= parseInt(ua.substr(4,2),10);
// Internet Explorer 8及更低版本
如果(isIE &&版本<9){
var link = document.createElement('a');
link.href =網址;
document.body.appendChild(link);
link.click();
}
//所有其​​他瀏覽器都可以使用標準window.location.href(它們不會像Internet Explorer 8及更低版本那樣丟失HTTP_REFERER)
其他{
window.location.href = url;
}
}
|
有很多方法可以做到這一點。
// window.location
window.location.replace('http://www.example.com')
window.location.assign('http://www.example.com')
window.location.href ='http://www.example.com'
document.location.href ='/路徑'
// window.history
window.history.back()
window.history.go(-1)
// window.navigate;僅適用於舊版本的Internet Explorer
window.navigate('top.jsp')
//可能沒有bueno
self.location ='http://www.example.com';
top.location ='http://www.example.com';
// jQuery
$ {location).attr('href','http://www.example.com')
$(window).attr('location','http://www.example.com')
$(location).prop('href','http://www.example.com')
|
這適用於所有瀏覽器:
window.location.href ='您的網址';
|
如果您對要執行的操作更具描述性,這將有所幫助。如果您嘗試生成分頁數據,則在執行此操作時有一些選擇。您可以為要直接訪問的每個頁面生成單獨的鏈接。
 1 
 2 
 3 
...
請注意,示例中的當前頁面在代碼和CSS中的處理方式有所不同。
如果要通過AJAX更改分頁數據,這就是jQuery的用處。您要做的是向與不同頁面相對應的每個定位標記中添加一個點擊處理程序。該單擊處理程序將調用一些jQuery代碼,然後通過AJAX提取下一頁,並使用新數據更新表。下面的示例假定您有一個返回新頁面數據的Web服務。
$(document).ready(function(){
$('a.pager-link')。click(function(){
var page = $(this).attr('href')。split(/ \?/)[1];
$ .ajax({
輸入:“ POST”,
網址:“ /服務路徑”,
數據:頁面,
成功:功能(內容){
$('#myTable')。html(content); //替換
}
});
返回false; //停止鏈接
});
});
|
我也認為location.replace(URL)是最好的方法,但是如果您想通知搜索引擎您的重定向(他們不分析JavaScript代碼來查看重定向),則應添加rel =“ canonical”元標記到您的網站。
添加一個帶有HTML刷新元標記的noscript部分也是一個很好的解決方案。我建議您使用此JavaScript重定向工具來創建重定向。它還具有Internet Explorer支持以傳遞HTTP Referrer。
沒有延遲的示例代碼如下所示:
<!-在打開head標籤後將其放在正確的位置->
<!-此代碼已根據GNU GPL v3許可->
<!-允許您自由複制,分發和使用此代碼,但嚴格禁止刪除作者信譽->
<!-由http://insider.zone/tools/client-side-url-redirect-generator/->生成
<!-重新開始->