2016-03-19 3 views
0

Я пытаюсь понять следующее поведение.Anchor target _blank заблокирован браузером

Я создал простой якорный тег:

<a href="/example/link" target="_blank"> 
    <img src="/images/layout_open.png"> 
    <span class="open-new-tab">Open in new tab</span> 
</a> 

Update: Эти <a> теги создаются асинхронно. После запросов AJAX JS создает теги <a>.

Проблема заключается в том, что Google Chrome вместо этого блокирует вкладку открытия, как если бы это было обструктивное всплывающее окно.

Как я могу избежать такого поведения? Я прочитал на других вопросах StackOverflow, что я могу добавить тег данных <a> и через jQuery связать ему событие, а с помощью JS я могу открыть новое окно.

Я не понимаю, почему в моем примере он не работает, а на других сайтах он не блокируется. Это соединение с одним и тем же доменом и хостом.

Я пришел к выводу, что это может произойти из-за того, что когда я нажимаю span или img, событие будет запущено во время фазы пузырьков, тогда это не прямое действие, а косвенное действие.

В чем причина этого и как его избежать?

Благодаря

Update:

Я думаю, что я узнал решение. Проблема в том, что у изображений есть привязанное к нему событие onclick, которое я раньше не делал. Так же, как это:

<a href="/example/link" target="_blank"> 
    <img src="/images/layout_open.png" onclick="showFullImage()"> 
    <span class="open-new-tab">Open in new tab</span> 
</a> 

Я не пробовал еще, но, как предположил @Siderite, что блокировка не регулярное поведение браузера. Поэтому я считаю, что Google Chrome будет отмечать это как косвенное действие.

Я попробую завтра и дам вам знать в Update nr. 2

Спасибо всем

+1

Он должен работать без проблем. –

+1

Вы нажимаете на него кодом, а не действием пользователя? – epascarello

+0

После того, как я нажму изображение или пробел. Я не нажимаю на вызов события click через Javascript. –

ответ

2

Это не нормальное поведение браузера, но более вероятно, расширение, которое пытается агрессивно блокировать всплывающие окна.

Осмотрите свои расширения Chrome, перейдя на страницу chrome: // extension/url.

+0

Мой вопрос был обновлен. –

+0

Мой ответ стоит. Независимо от того, какие изменения DOM, в конце концов, у вас есть элемент привязки, содержащий изображение и интервал. При нажатии на нее следует открыть страницу в другом окне или вкладке. Это стандартная и очень простая функциональность браузера. Таким образом, у вас есть расширение, блокирующее его, или есть какой-то код Javascript, который выполняется при нажатии на него, и это то, что заблокировано. –

+0

Я стою с Сидерит.Отключите все расширения и попробуйте запустить код. – IzzyCooper

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