# JavaScript中的focus()方法怎么用
## 1. 什么是focus()方法
`focus()`是JavaScript中用于將鍵盤焦點設置到特定DOM元素的方法。當元素獲得焦點時:
- 對于可輸入元素(如`<input>`),光標會出現在元素內
- 對于按鈕類元素,會顯示焦點樣式
- 元素會觸發`focus`事件
這是Web開發中實現表單交互、無障礙訪問和鍵盤導航的重要工具。
## 2. 基本語法
```javascript
element.focus();
element.focus(options); // 現代瀏覽器支持帶參數的版本
options(可選):一個包含以下屬性的對象:
preventScroll(布爾值):是否阻止瀏覽器滾動到獲得焦點的元素<input type="text" id="username">
<button onclick="focusInput()">聚焦輸入框</button>
<script>
function focusInput() {
document.getElementById("username").focus();
}
</script>
// 聚焦但不滾動到元素
element.focus({ preventScroll: true });
function validateForm() {
const email = document.getElementById("email");
if (!email.value.includes("@")) {
alert("請輸入有效的郵箱地址");
email.focus();
return false;
}
}
并非所有元素都能獲得焦點,常見可聚焦元素包括:
<input> 所有類型<textarea><select><button><a>(必須有href屬性)tabindex屬性的任何元素與focus()相反,移除元素的焦點:
element.blur();
focus:元素獲得焦點時觸發blur:元素失去焦點時觸發focusin:類似focus但會冒泡focusout:類似blur但會冒泡element.addEventListener("focus", function() {
this.style.border = "2px solid blue";
});
// 表單提交后自動聚焦到第一個字段
form.addEventListener("submit", function(e) {
e.preventDefault();
// 處理表單數據...
this.reset();
this.elements[0].focus();
});
function openModal() {
modal.style.display = "block";
modalCloseButton.focus(); // 將焦點鎖定在關閉按鈕上
}
// 路由變化后聚焦到主要內容區域
router.onRouteChange(() => {
mainContent.focus();
});
/* 確保焦點狀態可見 */
:focus {
outline: 2px solid #0066ff;
}
<!-- 使div可聚焦 -->
<div tabindex="0">可聚焦的div元素</div>
<!-- tabindex="-1" 使元素可編程聚焦但不在常規Tab序列中 -->
<div id="programmaticFocus" tabindex="-1"></div>
<div>沒有tabindex)disabled屬性)display: none或visibility: hidden)解決方案:
// 確保DOM加載完成
window.addEventListener("DOMContentLoaded", function() {
document.getElementById("myInput").focus();
});
// 動態創建輸入框并聚焦
const newInput = document.createElement("input");
document.body.appendChild(newInput);
newInput.focus();
focus()方法在所有現代瀏覽器中都有良好支持:
- Chrome 1+
- Firefox 1+
- Safari 1+
- Edge 12+
- Opera 8+
帶參數的focus(options)在較新版本中支持:
- Chrome 66+
- Firefox 60+
- Safari 10.1+
- Edge 79+
function createFocusTrap(element) {
const focusableElements = element.querySelectorAll(
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
);
const firstElement = focusableElements[0];
const lastElement = focusableElements[focusableElements.length - 1];
element.addEventListener("keydown", function(e) {
if (e.key === "Tab") {
if (e.shiftKey && document.activeElement === firstElement) {
e.preventDefault();
lastElement.focus();
} else if (!e.shiftKey && document.activeElement === lastElement) {
e.preventDefault();
firstElement.focus();
}
}
});
firstElement.focus();
}
// 使用tabIndex屬性自定義Tab順序
<input tabindex="1">
<button tabindex="3">按鈕</button>
<select tabindex="2"></select>
JavaScript的focus()方法是Web開發中管理用戶交互的核心工具之一。正確使用它可以:
- 提升表單體驗
- 增強無障礙訪問
- 創建更流暢的用戶流程
- 實現復雜的焦點控制邏輯
記住要始終考慮用戶的實際需求和無障礙訪問要求,避免過度使用自動聚焦功能。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。