<a> link not working by clicking, only work by &#34;Open link in new tab&#34; command</a>

时间:2013-02-24 08:44:53

标签: 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>

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

9 个答案:

答案 0 :(得分:33)

您有一些javascript代码阻止执行锚标记的默认操作。您可以检查FireBug或Chrome DevTools中的Network标签,看看点击链接时是否有一些AJAX请求。您可以尝试排除javascript文件,直到找到正在执行此操作的文件。

答案 1 :(得分:5)

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

例如:

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

.preventDefault()阻止重定向。

答案 2 :(得分:2)

Darren正确地给出了一些javascript代码,它正在发送一个AJAX请求(post或get),阻止链接按预期运行。

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

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

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

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

类似的target='_blank'

答案 3 :(得分:1)

试试这段代码......

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

答案 4 :(得分:1)

如果地址在href属性中没有传输协议,则可能发生这种情况。一个示例是将localhost链接为<a href="localhost"></div>而不是<a href="http://localhost"></div>。如果这样做,您将看到Google Chrome将取消已取消状态,并且在Safari中会出现一个对话框,询问应该打开哪个应用程序链接,因为传输协议未知。在PHP中设置$_SERVER['HTTP_HOST']链接时遇到此问题。

关键是,请务必将转移协议保留在链接前面http://https://ftp://或其他任何内容。

答案 5 :(得分:0)

我知道这是一个老问题,但刚刚遇到类似的问题,听起来问题可能是您的请求被浏览器阻止了。如果您当前处于尝试链接到不安全(http)资源的安全(https)环境中,则会发生这种情况。

目前还不清楚您的href是什么,但如果您当前的环境是安全的,请确保href是https(或//)。

答案 6 :(得分:0)

我在父元素上设置了e.preventDefault()

答案 7 :(得分:0)

在使用JS设置链接的href属性后,我在ReactJS中遇到了这个问题。我使用useState钩子解决了链接的问题。

答案 8 :(得分:0)

我有 data-bs-dismiss="modal" 关闭我的模式但阻止重定向