Lütfen bu örnekleri iPhone'unuzda açın.iPhone - JavaScript Dispatch Event - Seçtiğim Menü bir setTimeout işlevi açılmıyor
Aşağıdaki kod doğru davranışdır.
sen işe yaramaz bir setTimeout işlevi eklerseniz
<select id="selectMenu">
<option value="1">1</option>
<option value="2">2</option>
</select>
<input id="button" name="button" type="button" value="Click Me" />
var initEvt = function (el, type) {
var e = document.createEvent('MouseEvents');
e.initEvent(type, true, true, window);
el.dispatchEvent(e);
},
selMenu;
selMenu = document.getElementById('selectMenu');
document.getElementById('button').onclick = function() {
initEvt(selMenu, 'mouseover');
initEvt(selMenu, 'mousedown');
initEvt(selMenu, 'mouseup');
initEvt(selMenu, 'click');
}
.
<select id="selectMenu">
<option value="1">1</option>
<option value="2">2</option>
</select>
<input id="button" name="button" type="button" value="Click Me" />
var initEvt = function (el, type) {
var e = document.createEvent('MouseEvents');
e.initEvent(type, true, true, window);
el.dispatchEvent(e);
},
selMenu;
selMenu = document.getElementById('selectMenu');
document.getElementById('button').onclick = function() {
setTimeout(function() {
initEvt(selMenu, 'mouseover');
initEvt(selMenu, 'mousedown');
initEvt(selMenu, 'mouseup');
initEvt(selMenu, 'click');
}, 500);
}
http://jsfiddle.net/ghwfstmj/1/
herhangi bir fikir neden
?Ayrıca bir tuhaf kaydırma sorunu görüyorum. Eğer iki seçim menüsü varsa, düğmeye aşağı doğru ilerler ve yerel (seçim seçenekleri) sol ve sağ okları kullanırsanız yedeklenir. İşiniz tıklatırsanız bunu yapmak veya el onlara tıklayın değildir:
select {
display: block;
width: 100%;
}
#selectMenu { margin-bottom: 50px; }
#selectMenu2 { margin-bottom: 200px; }
<select id="selectMenu">
<option value="1">1</option>
<option value="2">2</option>
</select>
<select id="selectMenu2">
<option value="1">1</option>
<option value="2">2</option>
</select>
<input id="button" name="button" type="button" value="Click Me" />
var initEvt = function (el, type) {
var e = document.createEvent('MouseEvents');
e.initEvent(type, true, true, window);
el.dispatchEvent(e);
},
selMenu;
selMenu = document.getElementById('selectMenu');
document.getElementById('button').onclick = function() {
initEvt(selMenu, 'mouseover');
initEvt(selMenu, 'mousedown');
initEvt(selMenu, 'mouseup');
initEvt(selMenu, 'click');
}
http://jsfiddle.net/ghwfstmj/4/
Şerefe!
Herşeyin iyi çalıştığı anlaşılıyor. Zamanlayıcı şey çalışıyor (en azından krom ile). Doğal sol sağ oklarla garip davranış hakkında, bu sadece bir odak şey olabilir. Click ve mouseevent'i gönderiyorsunuz ama belki de selMenu'da odaklamayı tetiklemelisiniz. – Bene
Safari'de (iPhone) deneyin. Tarayıcı ve emülatör iyi çalışıyor. Odak eklemeye çalıştım ve şansım olmadı. Bir tabindex eklerseniz ve $ ('# selectMenu') kodunu kullanırsanız, aynı davranışı elde edebilirsiniz: trigger ('focus'); Bu, odak olayıyla ilgili olmadığı anlamına gelir. Ben de bunun için bir ekstra dispatchEvent ekledim ve şans yoktu :( – Paddy
Oups, benim hatam dümdüz kodda gittim ve bütün "iPhone" kısmını unuttum – Bene