HOWTO · JavaScript

如何在 JavaScript 中自動點選

使用 window.open() 在另一個瀏覽上下文中開啟連結,或使用 window.location 導覽目前頁面。

本頁內容

「自動點選」可能是指程式執行時開啟連結,也可能是啟用連結本身。若要在另一個瀏覽上下文中開啟目的地,請使用 window.open();若要在目前的瀏覽上下文中導覽,請使用 window.location。這兩種方法都不會模擬錨點點選,也不會執行錨點的點選處理常式;只有在確實需要以程式啟用點選行為時,才呼叫錨點元素的 click() 方法。

在 JavaScript 中使用 window.open() 自動點選

window.open() 會要求瀏覽器在新的或具名的瀏覽上下文中開啟網址。該上下文會以分頁還是視窗呈現,由瀏覽器決定;如果程式發起的要求不符合瀏覽器政策,瀏覽器可能會封鎖它,通常在要求跟隨使用者操作時才會允許。這個方法不會觸發目的地錨點的點選處理常式。

例如,假設頁面上有以下錨點:<a id="docs-link" href="https://example.com/">Documentation</a>。讀取解析後的 href,再將它傳給 window.open():

if (typeof document !== "undefined") {
  const link = document.getElementById("docs-link");
  if (link) {
    window.open(link.href, "_blank", "noopener");
  }
}

名稱 _blank 會要求使用獨立的瀏覽上下文,但其實際呈現方式由瀏覽器設定決定,瀏覽器也可能封鎖這項要求。noopener 功能可避免開啟的頁面取得可用的 window.opener 參照。此處的瀏覽器範例未在本文環境中執行;執行時需要包含該錨點的頁面和瀏覽器環境。

在 JavaScript 中使用 window.location 自動點選

若要在目前的瀏覽上下文中導覽至同一個連結,可以將目的地指定給 window.location 或 window.location.href,也可以呼叫 window.location.assign():

if (typeof document !== "undefined") {
  const link = document.getElementById("docs-link");
  if (link) {
    window.location.assign(link.href);
  }
}

以上每種方式都會在目前的瀏覽上下文中導覽;它們不會開啟另一個分頁,也不會觸發錨點的點選處理常式。Window.location 是一個會傳回 Location 物件的屬性;該物件提供目前網址和導覽方法。在瀏覽器指令碼中,通常也可以直接使用全域名稱 location;寫成 window.location 則能明確指出它所屬的物件。

如需 API 詳細資訊,請參閱 MDN 的 Window.location 屬性文件。若要啟用錨點元素及其點選行為,請使用該元素的 click() 方法;以程式啟用點選不代表真實的使用者操作,且仍受瀏覽器行為影響。