не работает искуственное событие "click"
Здравствуйте.
Подскажите кто знает по реализации кросбраузерного искусственного события. Нежеследующий код не работает в Firefox. Не работает по причине того, что Firefox (и IE) не выполняют действия "по умолчанию" для искусственных событий типа "click". Хотя в Firefox метод dispatchEvent возвращает true. Как победить эту беду? <head> <meta charset="utf-8" /> <title>test</title> <style type="text/css"> div { position: absolute; width: 200px; height: 20px; border: 1px solid red; } input { visibility: hidden; } </style> </head> <body> <div> <input type="file" /> </div> <script type="text/javascript"> document.getElementsByTagName("div").item(0).onclick = function () { if (this.dispatchEvent) { var e = document.createEvent("MouseEvents"); e.initMouseEvent("click", false, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); this.getElementsByTagName("input").item(0).dispatchEvent(e); } } </script> </body> |
<head> <meta charset="utf-8" /> <title>test</title> <style type="text/css"> div { position: absolute; width: 200px; height: 20px; border: 1px solid red; } input { visibility: hidden; } </style> </head> <body> <div> <input type="text" /> </div> <script type="text/javascript"> document.getElementsByTagName("div")[0].onclick = function (){alert(1)}; if (this.dispatchEvent){ var evObj = document.createEvent('MouseEvents'); evObj.initEvent('click', true, true); document.getElementsByTagName("div")[0].dispatchEvent(evObj); } </script> </body> Ну а для ИЕ fireEvent http://help.dottoro.com/ljvtddtm.php |
dmitriymar, спасибо, но мне нужно чтобы при клике по диву скрипт "кликал" по input type=file
|
Цитата:
Если да -я не вижу проблемы, чтобы это сделать. Для этого достаточно потратить минуту и прочитать о методе getElementsByTagName. Сделать видимым по клику элемент инпут и сгенерировать для него событие клика Браузер блокирует всплывающие окна инпута . FF блокирует , Хром в обще не окрывает |
видимость элемента ничего не меняет. если не вкладывать его в див, а расположить рядом, то ситуация останетса такой же. А спрятал я его для того, чтобы сделать свою кнопку вместо дефолтного серого прямоУГольника с надписью "Обзор.
|
dmitriymar,
помню такое обсуждали вроде полтора года назад, в FF с input type="file" вообще всё строго |
Dim@,
Я не читал к сож, но предполагал). Просто по коду было непонятно на чём хочет кликнуть -на невидимом элементе, или это запарка |
dmitriymar,
понятно |
Всё оказалось до безобразия просто и без скриптов: input сделал прозрачным.:lol:
|
ILL-JAH,
так он и был прозрачным, ведь в css input { visibility: hidden; } |
Часовой пояс GMT +3, время: 09:10. |