Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.04.2013, 20:51
Аспирант
Отправить личное сообщение для ILL-JAH Посмотреть профиль Найти все сообщения от ILL-JAH
 
Регистрация: 24.03.2011
Сообщений: 93

не работает искуственное событие "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>
Ответить с цитированием
  #2 (permalink)  
Старый 30.04.2013, 21:02
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

<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, 30.04.2013 в 21:10.
Ответить с цитированием
  #3 (permalink)  
Старый 30.04.2013, 21:23
Аспирант
Отправить личное сообщение для ILL-JAH Посмотреть профиль Найти все сообщения от ILL-JAH
 
Регистрация: 24.03.2011
Сообщений: 93

dmitriymar, спасибо, но мне нужно чтобы при клике по диву скрипт "кликал" по input type=file
Ответить с цитированием
  #4 (permalink)  
Старый 30.04.2013, 21:25
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от ILL-JAH
dmitriymar, спасибо, но мне нужно чтобы при клике по диву скрипт "кликал" по input type=file
Не знаю разрешит ли такое политика безопасности.
Если да -я не вижу проблемы, чтобы это сделать. Для этого достаточно потратить минуту и прочитать о методе getElementsByTagName.
Сделать видимым по клику элемент инпут и сгенерировать для него событие клика

Браузер блокирует всплывающие окна инпута . FF блокирует , Хром в обще не окрывает

Последний раз редактировалось dmitriymar, 30.04.2013 в 21:40.
Ответить с цитированием
  #5 (permalink)  
Старый 30.04.2013, 21:37
Аспирант
Отправить личное сообщение для ILL-JAH Посмотреть профиль Найти все сообщения от ILL-JAH
 
Регистрация: 24.03.2011
Сообщений: 93

видимость элемента ничего не меняет. если не вкладывать его в див, а расположить рядом, то ситуация останетса такой же. А спрятал я его для того, чтобы сделать свою кнопку вместо дефолтного серого прямоУГольника с надписью "Обзор.
Ответить с цитированием
  #6 (permalink)  
Старый 30.04.2013, 21:39
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

dmitriymar,
помню такое обсуждали вроде полтора года назад, в FF с input type="file" вообще всё строго
Ответить с цитированием
  #7 (permalink)  
Старый 30.04.2013, 21:41
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Dim@,
Я не читал к сож, но предполагал). Просто по коду было непонятно на чём хочет кликнуть -на невидимом элементе, или это запарка

Последний раз редактировалось dmitriymar, 30.04.2013 в 21:45.
Ответить с цитированием
  #8 (permalink)  
Старый 30.04.2013, 21:47
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

dmitriymar,
понятно
Ответить с цитированием
  #9 (permalink)  
Старый 30.04.2013, 21:48
Аспирант
Отправить личное сообщение для ILL-JAH Посмотреть профиль Найти все сообщения от ILL-JAH
 
Регистрация: 24.03.2011
Сообщений: 93

Всё оказалось до безобразия просто и без скриптов: input сделал прозрачным.
Ответить с цитированием
  #10 (permalink)  
Старый 30.04.2013, 21:54
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

ILL-JAH,
так он и был прозрачным, ведь в css
input { visibility: hidden; }
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отловить обратное событие "click" ? jsuse Общие вопросы Javascript 2 18.01.2012 00:16
Помогите не работает событие motoroller jQuery 2 01.04.2011 23:38
Doctype и javascript: не работает событие в Internet exproler nastya Internet Explorer 0 23.03.2011 12:26
ява-скрипт выборочно работает-не работает zeta777 Internet Explorer 0 20.01.2010 11:41
Плагин JQuery tabs как подписаться нв событие перекл.вкладок xela1980 jQuery 6 15.12.2009 18:00