Tôi không hy vọng, nhưng tôi sẽ yêu cầu chỉ trong trường hợp.JavaScript trên iOS: mở phần tử chọn HTML
Tôi muốn có thể sử dụng JavaScript để mở phần tử được chọn trong Safari trên thiết bị di động cho iPhone/iPad.
Tìm kiếm tràn Google/Stack mở rộng cho thấy rất nhiều người muốn có thể thực hiện điều này trong trình duyệt nói chung, nhưng không được hỗ trợ (tại sao không, tôi tự hỏi?). Nhiều gợi ý khác nhau đã được đề xuất, từ việc gọi focus()
trên phần tử chọn và thay đổi thuộc tính size
để hiển thị thêm các thành phần option
hoặc xây dựng phần tử chọn hoàn toàn với các yếu tố <div>
và <ul>
. Tuy nhiên, tôi muốn sử dụng trình điều khiển gốc chọn các điều khiển trong iPad và iPhone.
Tôi tự hỏi, chỉ có thể, ai đó có thể biết về phương thức Apple WebKit độc quyền để thực hiện việc này. Nó sẽ là một cái gì đó như:
var myselect = document.getElementsByTagName("select")[0];
myselect.open(); // this method doesn't exist
Như một phần thưởng, nó cũng muốn được tiện dụng để biết của một thuộc tính boolean nói rằng cho dù các yếu tố lựa chọn hiện nay là mở/hoạt động, hay không (tức là không chỉ xem phần tử đã tập trung). Tôi biết tôi có thể làm việc này bằng cách theo dõi nhấp chuột và thay đổi sự kiện, nhưng một thuộc tính đơn giản sẽ hữu ích.
Suy nghĩ mơ ước?
UPDATE:
tôi vẫn chưa có câu trả lời, nhưng tôi đã phát hiện ra rằng mô phỏng một mousedown
mở thành công một yếu tố lựa chọn trong Google Chrome, nhưng không phải iPad hoặc Firefox và vân vân:
function simulateMouseEvent(eventName, element) {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent(eventName, true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
element.dispatchEvent(evt);
}
simulateMouseEvent("mousedown", select);
UPDATE:
tôi đã hỏi một câu hỏi liên quan, nhưng khác nhau (và được trả lời tương tự!) trên một số hộp ở đây: Is there a DOM event that fires when an HTML select element is closed?
Ông có thể buộc một nhấp chuột/tap trên yếu tố đó? – Seth
Bạn có thể cho chúng tôi biết bạn muốn đạt được hiệu quả gì không? Giá trị gia tăng cho người dùng tôi muốn nói. – mplungjan
@Seth - làm cách nào? @mplungjan - Nó dành cho ứng dụng trực quan hóa dữ liệu dựa trên SVG, nơi các cử chỉ khác nhau có thể kích hoạt các kết quả khác nhau. Ví dụ, người dùng có thể kéo một vòng tròn xung quanh màn hình, nhưng nếu cùng một vòng tròn được đưa ra một lần chạm ngón tay thì tôi muốn một hộp chọn có đầy đủ các tùy chọn xuất hiện. Tôi không muốn yêu cầu 2 lần nhấp chuột: một hiển thị/tập trung chọn, +1 để hiển thị các tùy chọn. I * có thể * tạo phần tử chọn mà người dùng tương tác với, vì vậy nó sẽ mở ra khi được nhấp và tôi có thể di chuyển phần tử vòng tròn nếu phần tử chọn được kéo, nhưng tôi muốn tránh điều đó nếu có thể. – Premasagar