2016-11-06 20 views
6

Tôi đang viết một bài kiểm tra đơn vị để kiểm tra thứ tự tab trên trang web của mình và tôi không thể tìm cách mô phỏng khóa của người dùng xuống của khóa TAB để tập trung vào phần tử có thể lấy tiêu điểm tiếp theo, mặc dù điều này có vẻ là một nhiệm vụ dễ dàng.Có cách nào để kích hoạt phím TAB theo chương trình để di chuyển tiêu điểm đến phần tử có thể lấy tiêu điểm tiếp theo không?

jQuery được phép trong khi giải pháp javascript thuần túy được ưu tiên. Bất kỳ loại trợ giúp nào đều được đánh giá cao.

// TODO 
 
function triggerTab() { 
 

 

 
} 
 

 
$("#btn-save").focus(); 
 
triggerTab(); 
 

 
// Expect the focus is on the cancel button now. 
 
console.log(document.activeElement.id);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<p> some text </p> 
 
<button id="btn-save"> save </button> 
 
<button id="btn-cancel> cancel </button>

T.B. Không thể chấp nhận gọi focus() trên phần tử có thể lấy nét tiếp theo, ngay cả khi bạn có thể viết mã để tìm ra phần tử có thể lấy tiêu điểm tiếp theo. Vì vậy, con đường này là KHÔNG những gì tôi muốn:

function getAllFocusables() { 
    ... 
} 

var focusables = getAllFocusables(), 
    index = focusables.indexOf(document.activeElement); 

$(focusables[index+1]).focus(); 
+0

Không có không phải là một cách để kích hoạt các phím tab, nhưng có một cách để tìm phần tử có thể tập trung tiếp theo trong DOM và tập trung vào nó. Có lẽ bất cứ điều gì bạn đang sử dụng để kiểm tra đơn vị này, có một cách để kích hoạt các phím, tôi không biết, tôi không bao giờ đơn vị kiểm tra xử lý sự kiện đơn giản? – adeneo

+2

Tại sao bạn KHÔNG muốn sử dụng phương pháp đơn giản hơn để tập trung những gì bạn muốn trực tiếp. – vlaz

+1

@vlaz Bởi vì điều này là để kiểm tra đơn vị của một mô-đun trong dự án của tôi, mô-đun có mã js để quản lý thứ tự tab bằng cách sử dụng ý tưởng giống như những gì tôi đặt ở cuối câu hỏi. Tôi nghĩ rằng nó là ngớ ngẩn để sử dụng mã của cùng một mô-đun để kiểm tra chính nó. Đây là lý do tại sao tôi muốn thử nghiệm theo cách này, thiết lập đánh dấu, lập trình kích hoạt các tab và kiểm tra xem thứ tự tab có như mong đợi hay không. –

Trả lời

4

Bạn không thể mô phỏng một phím tab từ một trình duyệt tiêu chuẩn sử dụng Javascript.

Nếu bạn đang làm bài kiểm tra đơn vị của bạn sử dụng một trình duyệt không đầu, như phantomjs ví dụ, bạn có thể bắt chước tab chính

var webPage = require('webpage'); 
var page = webPage.create(); 

page.sendEvent('keypress', page.event.key.Tab); 
Các vấn đề liên quan