Ссылка <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()
на родительский элемент.