2013-03-04 3 views
1

Я хочу открыть всплывающее окно, когда кто-то щелкнет по области правой кнопкой мыши. Я использую это на данный момент:Всплывающие окна блокируются при открытии через событие mousedown

$("#popup").bind('mousedown', function(e) { 
    var w; 
    if(e.which==3) { 
     w=window.open('link','_blank','options'); 
    } else { 
     return false; 
    } 
    if(w!=null){ 
     w.focus(); 
    } 
    event.preventDefault(); 
}); 

При его использовании с светлячок (не тестировал с другими браузерами, хотя) всплывающее окно блокируется. Я заметил, что при событии «click» это вообще не работает.

Есть ли способ открыть всплывающее окно при щелчке правой кнопкой мыши по чему-либо, если он не заблокирован браузером?

+3

Как пользователь, я искренне надеюсь, что нет. – prodigitalson

+0

Почему вы хотите создать всплывающее окно с правом щелчка, пользователю, который может быть немного странным .. было бы более разумно, если бы пользовательское меню контента не всплывало! –

+1

Всплывающее окно заблокировано по причине. У пользователя есть выбор: разрешать или запрещать всплывающие окна, и у вас нет контроля над этим. –

ответ

2

Нет, это невозможно.

Вы можете видеть right here, что в средах Mozilla средняя и правая кнопки мыши не позволяют распространять события кликов. И вы можете видеть here, что только click получить 'trusted' и что mouseup и mousedown этого не делают.

Хром действует аналогичным образом, но позволяет средним кнопкам мыши распространять события click, и им доверяют (всплывающие окна, происходящие из события, не будут заблокированы). Тем не менее, они будут открывать окна из фокуса (вы останетесь на текущей странице)

Я бы предложил использовать обнаружение ключа Shift на обычном обработчике кликов.

Смежные вопросы