Ссылка <a>не работает, нажав, только работая командой "Открыть ссылку в новой вкладке"

Я встречаю эту интересную ситуацию:

<ul>
    @foreach (var item in Model)
    {
      <li>
        <a href="@Url.Action("Details", "Product", new { id = item.Id })" >@item.Name</a>
      </li>
    }
</ul>

Когда я нажимаю ссылку, ничего не происходит, страница сведений о продукте не открывается. Но я делаю "Открыть ссылку в новой вкладке" , затем она открывается. Что может быть причиной?

Ответ 1

У вас есть код javascript, который предотвращает выполнение действия тега привязки по умолчанию. Вы можете просмотреть вкладку Network в FireBug или Chrome DevTools, чтобы узнать, выполняется ли какой-либо запрос AJAX при нажатии на ссылку. Вы можете попробовать исключить файлы javascript, пока не найдете тот, который это делает.

Ответ 2

Возможно, вы предотвратили событие перенаправления тега с помощью JavaScript.

Например:

$(document).on('click', 'a.thatTag', function (e) {
   // ...
   e.preventDefault();
});

.preventDefault() предотвращает перенаправление.

Ответ 3

Правильно, учитывая Даррен, это, безусловно, некоторый код javascript, который отправляет запрос AJAX (сообщение или получение), что препятствует функционированию ссылки, как и следовало ожидать.

Однако, если вы использовали внешний ресурс, может быть трудно исправить ошибку в файлах min.

Я предлагаю использовать встроенное событие jquery onclick, чтобы обойти вызов AJAX

<a href="http://foo.bar/" onclick="window.open('https://www.foo.bar/culrsteam')">Foo</a>

Ответ 4

Попробуйте этот код...

<a href="http://google.com/" onclick="location.replace('http://google.com/'),'_top'">Google</a>

Ответ 5

Это может произойти, если адрес не имеет протокола передачи в атрибуте href. Примером может быть привязка localhost как <a href="localhost"></div> вместо <a href="http://localhost"></div>. Вы увидите, что Google Chrome предоставит отмененный статус, если это будет сделано, а в Safari появится диалоговое окно с запросом о том, какое приложение должно быть открыто, поскольку протокол передачи неизвестен. Я столкнулся с этой проблемой при установке ссылки на $_SERVER['HTTP_HOST'] в PHP.

Ключевой момент: убедитесь, что перед протоколом передачи оставлен протокол передачи http://, https://, ftp:// или что-то еще.

Ответ 6

Я знаю, что это старый вопрос, но только что возникла похожая проблема, похоже, проблема в том, что ваш запрос блокируется браузером. Это может произойти, если вы в настоящее время находитесь в защищенной (https) среде и пытаетесь установить связь с небезопасным (http) ресурсом.

Не ясно, какой у вас href, но убедитесь, что href - https (или//), если ваша текущая среда безопасна.

Ответ 7

Я установил e.preventDefault() на родительский элемент.