如何使用 JavaScript 重定向我的網頁?


您可能遇到過這種情況:點選某個 URL 跳轉到特定頁面,但實際上內部重定向到了另一個頁面。這就是頁面重定向的原因。重定向是指對一個頁面的 HTTP 請求立即導航到另一個頁面。它與簡單地重新載入網站不同。使用客戶端的原生 JavaScript 進行網頁重定向非常簡單。因此,在本文中,我們將學習如何使用原生 JavaScript 重定向網頁以及何時使用特定方法。

使用原生 JavaScript 實現網頁重定向有很多方法,但本文將介紹一些最知名、最高效和最典型的 JavaScript 重定向方法。

  • 使用replace() 方法

  • 使用window.location.href 進行重定向

  • 使用 window 的assign() 方法

使用 replace() 方法

Location 介面的replace() 方法用給定 URL 上的資源替換當前資源。replace() 方法和assign() 方法的區別在於,使用replace() 後,當前頁面不會儲存在會話歷史記錄中,使用者無法透過按下後退按鈕返回到該頁面。

語法

使用者可以遵循以下語法使用window.location.replace() 方法。

window.location.replace("url");
location.replace(“url”); // without using window object

引數

  • url − 此引數表示使用者將被重定向到的網頁。

示例

以下示例演示了在 JavaScript 中使用window.location.replace() 方法重定向網頁。

我們還可以將window.location.replace 替換為location.replace,因為兩者沒有區別。它們的結果相同(在瀏覽器中,window 物件是全域性物件)。我們可以使用 window 物件的屬性訪問全域性變數或函式。

指令碼標籤可以放在 HTML 的 head 部分或 body 部分,具體取決於您希望 JavaScript 何時載入。一般來說,JavaScript 程式碼可以包含在文件的 head 部分,並與 HTML 文件的主體文字分開。

<html>
<head>
   <title>Example- Redirecting web page with JavaScript</title>
</head>
<body>
   <h2>Redirecting web page with JavaScript</h2>
   <p>Click the following button, to get redirected Using the replace() function</p>
   <input type="button" value="Redirect Me" title="Redirect" onclick="Redirect()"/>
   <script>
      function Redirect() {
         window.location.replace("https://tutorialspoint.tw");
      }
   </script>
</body>
</html>

執行上述程式碼後,使用者可以看到他們是如何使用replace() 函式重定向到 tutorials point 首頁的,但無法使用後退按鈕返回到原始頁面。

使用 window.location.href 進行重定向

在這種方法中,我們將使用最常用的 JavaScript 技術來重定向 URL,這隻需更改 location 的 href 屬性即可實現。這是一個屬性,它將告知您瀏覽器當前的 URL 位置,而不是一個方法。如果屬性的值發生更改,頁面將重新載入。

您應該記住,window.location.href 並不總是向伺服器傳送請求,它從瀏覽器的快取中載入頁面。如果您的快取中存在較舊版本的頁面,它將重定向到該頁面,而不是從伺服器載入新頁面。

語法

window.location.href = "http://newURL.com";

示例

使用者可以透過以下示例學習如何重定向他們的頁面。

<html>
<head>
   <title>Example- Redirecting web page with JavaScript</title>
</head>
<body>
   <h2>Redirecting web page with JavaScript</h2>
   <p>Click the following button, to get redirected Using the replace() function</p>
   <input type="button" value="Redirect Me" title="Redirect" onclick="Redirect()"/>
   <script>
      function Redirect() {
         window.location.replace("https://tutorialspoint.tw");
      }
   </script>
</body>
</html>

執行上述程式碼後,使用者可以觀察到頁面是如何從瀏覽器的快取中載入的,並且沒有向伺服器傳送請求來載入新頁面(前提是使用者瀏覽器快取中存在舊版本的頁面)。

使用 Window assign() 方法

可以使用window.location.assign() 函式使用 JavaScript 重定向網頁。此過程會重定向到新新增的 URL 並將其新增到歷史堆疊。

現在的問題是是否使用replace() 方法或 assign 方法。兩者之間的實際區別在於,replace() 方法會從文件歷史記錄中刪除當前文件的 URL,因此無法使用“後退”按鈕返回到原始文件。

因此,如果您想載入新文件並允許使用者從重定向的原始頁面返回,請使用assign() 方法。

語法

window.location.assign ( "url" );

示例

在下面的示例中,我們使用了window.location.assign() 方法重定向到 tutorials point 的首頁

<html>
<head>
   <title>Example - Redirecting web page with JavaScript</title>
</head>
<body>
   <h2>Redirecting web page with JavaScript</h2>
   <p>Click the following button, to get redirected using the window assign() function.</p>
   <input type="button" value="Redirect Me" title="Redirect" onclick="Redirect()">
   <script>
      function Redirect() {
         window.location.assign("https://tutorialspoint.tw");
      }
   </script>
</body>
</html>

點選按鈕後,使用者可以看到網頁已重定向,並且可以透過按下後退按鈕返回到原始頁面,這與replace() 方法不同,在replace() 方法中我們無法使用後退按鈕返回到上一頁。

結論

在本文中,我們使用了三種最常見和最高效的方法,使用原生 JavaScript 將使用者重定向到不同的網頁。所有方法都能正常工作,但應根據使用者的需求使用。本文未介紹一些額外的方法,例如window.navigate(),因為它們是特定於某些 Web 瀏覽器的,因此這些方法在其他 Web 瀏覽器中可能無法正常執行。

更新於:2022年7月20日

4K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.