<a>链接无法通过单击工作,仅通过"在新选项卡中打开链接"命令工作

Jey*_*mov 16 html asp.net-mvc hyperlink

我遇到了这个有趣的情况:

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

当我单击链接时,没有任何反应,产品详细信息页面无法打开.但我做"在新标签中打开链接",然后打开.可能是什么原因?

Dar*_*rov 36

你有一些javascript代码阻止执行锚标记的默认操作.您可以检查NetworkFireBug或Chrome DevTools中的选项卡,以查看单击链接时是否正在进行某些AJAX请求.您可以尝试排除javascript文件,直到找到正在执行此操作的文件.

  • 在chrome上,DevTools有一个名为"事件监听器"的视图,它允许您识别任何此类事件处理程序.一个缺点是它没有显示继承的处理程序. (10认同)
  • 旧帖子,但今天的回答帮助了我!在文档点击处理程序上有一个流浪的`return false`...谢谢! (2认同)

小智 7

也许您使用JavaScript阻止了标记的重定向事件.

例如:

$(document).on('click', 'a.thatTag', function (e) {
   // ...
   e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

.preventDefault() 防止重定向.


小智 5

试试这个代码...

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


Pau*_*ulo 5

正确地由Darren给出,肯定是一些javascript代码正在发送AJAX请求(发布或获取),从而阻止链接按预期运行。

但是,如果您使用了外部资源,则可能很难纠正min文件中的错误。

我建议使用内联的jquery onclick事件来规避AJAX调用

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

您还可以使用window.open('https://www.foo.bar/culrsteam', '_blank')target='_blank'