1. 程式人生 > >用錨點anchor和location.reload 實現點選重新整理頁面並同時跳轉到本頁面指定位置

用錨點anchor和location.reload 實現點選重新整理頁面並同時跳轉到本頁面指定位置

群裡看到“如何實現點選重新整理頁面並同時跳轉到本頁面指定位置”這麼一個提問,於是抽空寫了個demo,做了個簡單實現,供大家參考。這裡有2個要求:
1)要重新整理頁面
2)跳轉到頁面指定位置
如果我們簡單用a標籤name屬性,錨點(anchor)來處理的話,只能實現跳轉到頁面指定位置,而不能重新整理。因此,對上述提問,筆者換了下順序,就比較容易實現了。
1)先跳轉到頁面指定位置;(用錨點實現即可)
2)再重新整理頁面;(location.reload(true)即可)

案例程式碼:

<!DOCTYPE html>
<html lang="en">
<
head> <meta charset="UTF-8"> <title>Location-Anchor</title> <script src="https://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script> <style type="text/css"> .box{width: 990px; margin:0 auto 10px; min-height: 400px; border:1px solid #e2e2e2;} .box .
hd{height: 30px; line-height: 30px; font-size: 16px; background:#f5f5f5; padding: 0 15px;} </style> </head> <body> <div class="box" style='min-height:0;'> <div class="hd"> <button type="button" onclick="goFloor(1)">Go Floor1</button> <button type="button"
onclick="goFloor(2)">Go Floor2</button> <button type="button" onclick="goFloor(3)">Go Floor3</button> <button type="button" onclick="goFloor(4)">Go Floor4</button> <button type="button" onclick="goFloor(5)">Go Floor5</button> </div> </div> <div class="box"> <div class="hd"><a name="floor1">Floor 1</a></div> </div> <div class="box"> <div class="hd"><a name="floor2">Floor 2</a></div> </div> <div class="box"> <div class="hd"><a name="floor3">Floor 3</a></div> </div> <div class="box"> <div class="hd"><a name="floor4">Floor 4</a></div> </div> <div class="box"> <div class="hd"><a name="floor5">Floor 5</a></div> </div> <script type="text/javascript"> function goFloor(floor) { var url = location.href; url = url.indexOf('#floor') > 0 ? url.replace(/\#floor(\d)/, '#floor' + floor) : url + '#floor' + floor; location.href = url; location.reload(true); } </script> </body> </html>

程式碼說明:
1)通過設定location.href = url(帶#a[name])實現錨點跳轉;
2)location.reload(true); 頁面重新載入,實現重新整理功能;
3)構建帶錨點的url,使用了字串正則替換;

頁面是否重新整理驗證:
1)先跳轉到floor3,此時url = …#floor3
2)修改html檔案,把<a name=“floor1”>Floor 1</a>改成<a name=“floor1”>Floor 1 refreshed</a>,儲存檔案
3)點選go floor1按鈕,看頁面floor1標題是否改成了“Floor 1 refreshed”。