Javascript-форум (https://javascript.ru/forum/)
-   Opera, Safari и др. (https://javascript.ru/forum/css-html-browser/)
-   -   Баг в Опере (select и onclick) (https://javascript.ru/forum/css-html-browser/34927-bag-v-opere-select-i-onclick.html)

Dimox 24.01.2013 22:06

devote, у меня абсолютно то же данные. Win32 - это разрядность самой Оперы, а не Винды.

Deff, реально как-то обойти этот баг?

Deff 24.01.2013 22:07

Dimox,
Ну костыль мон приделать - ток смысл - может иначе построить ?

Dimox 24.01.2013 22:11

По-другому никак, document.onclick обязательно нужен.

Deff 24.01.2013 22:29

<!DOCTYPE HTML>
<html>
  <head> 
<style>
body{
 width:100%;
}
</style>

</head>
  <body style="padding-top:200px;width:100%;text-align:center">

<select name="" id="select">
	<option value="">11111111111</option>
	<option value="">22222222222</option>
	<option value="" selected>33333333333</option>
	<option value="">44444444444</option>
	<option value="">55555555555</option>
</select> 

<script>
document.getElementById('select').focus();
document.onclick = function(e) {if(Key){
    alert('Сработало событие onclick!');
}}


var Key = true;
document.getElementById('select').onchange = function() {
    Key = false; //Запрет onclick на время смены селекта
    setTimeout('Key = true',40)
}

</script>


  </body>
</html>

Dimox 24.01.2013 23:10

Большое спасибо!

devote 24.01.2013 23:51

Deff,
странный костыль, хотя можно было сделать проще:

<select name="" id="select">
    <option value="">11111111111</option>
    <option value="">22222222222</option>
    <option value="" selected>33333333333</option>
    <option value="">44444444444</option>
    <option value="">55555555555</option>
</select> 
 
<script>
document.onclick = function(e) {
    if ((e&&e.target||{}).nodeName !== "OPTION") {
        alert('Сработало событие onclick!');
    }
}
</script>

Deff 25.01.2013 00:07

devote,
Cам удивилсо - ксать проверил еще у трёх юзеров с ХР

Ксать если ставить тестовый контент внутрь нормальной сайтовой обёртки - эффекта не наблюдаю
(*Не голый тест
Вот сюда ставил http://designforum.bestff.ru/

devote 25.01.2013 00:08

а еще лучше так:
<select name="" id="select">
    <option value="">11111111111</option>
    <option value="">22222222222</option>
    <option value="" selected>33333333333</option>
    <option value="">44444444444</option>
    <option value="">55555555555</option>
</select> 
  
<script>
document.addEventListener && document.addEventListener('keydown', function(e) {
    if (e.target.nodeName === "SELECT") {
        e.target._keypressed = true;
    }
}, false);

document.onclick = function(e) {
    if ((e&&e.target||{}).nodeName === "OPTION" && e.target.parentNode._keypressed) {
      e.target.parentNode._keypressed = false;
      return;
    }

    alert('Сработало событие onclick!');
}
</script>

Deff 25.01.2013 00:16

devote,
Ксать тут костыль для «onresize» изобразил

http://habrahabr.ru/post/166321/

devote 25.01.2013 00:36

Цитата:

Сообщение от Deff
Ксать тут костыль для «onresize» изобразил

что-то тебя совсем заминусовали там(


Часовой пояс GMT +3, время: 18:14.