Một số câu trả lời ở đây đề nghị sử dụng setTimeout
để trì hoãn quá trình tập trung vào phần tử đích. Một trong số họ đề cập rằng mục tiêu nằm trong hộp thoại phương thức. Tôi không thể bình luận thêm về tính chính xác của setTimeout
giải pháp mà không biết chi tiết cụ thể về nơi nó được sử dụng. Tuy nhiên, tôi nghĩ rằng tôi nên cung cấp một câu trả lời ở đây để giúp đỡ những người chạy vào chủ đề này giống như tôi đã làm
Thực tế đơn giản của vấn đề là bạn không thể tập trung vào một yếu tố chưa nhìn thấy được . Nếu bạn gặp phải vấn đề này, đảm bảo rằng mục tiêu thực sự hiển thị khi nỗ lực tập trung vào nó được thực hiện. Trong trường hợp của riêng tôi, tôi đã làm một cái gì đó dọc theo những dòng này
$('#elementid').animate({left:0,duration:'slow'});
$('#elementid').focus();
Điều này đã không làm việc. Tôi chỉ nhận ra những gì đang xảy ra khi tôi thực hiện $ ('# Elementid'). Focus () `từ bảng điều khiển đã hoạt động. Sự khác biệt - trong mã của tôi ở trên mục tiêu, không có gì chắc chắn rằng mục tiêu sẽ còn nguyên vẹn được hiển thị do hoạt ảnh có thể không hoàn thành . Và có manh mối
$('#elementid').animate({left:0,duration:'slow',complete:focusFunction});
function focusFunction(){$('#elementid').focus();}
hoạt động đúng như mong đợi. Ban đầu tôi cũng đã đặtsetTimeout
giải pháp và nó cũng hoạt động. Tuy nhiên, thời gian chờ được chọn tùy ý chắc chắn sẽ phá vỡ giải pháp sớm hay muộn tùy thuộc vào mức độ chậm của thiết bị chủ trong quá trình đảm bảo rằng phần tử đích có thể nhìn thấy được.