web-dev-qa-db-ja.com

<a>リンクをクリックしても機能せず、「新しいタブでリンクを開く」コマンドでのみ機能する

私はこの興味深い状況に会います:

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

リンクをクリックしても何も起こりません。製品の詳細ページが開きません。しかし、私は "新しいタブでリンクを開く"を実行します。その理由は何でしょうか?

16
Jeyhun Rahimov

アンカータグのデフォルトアクションの実行を妨げているJavaScriptコードがあります。 FireBugのNetworkタブまたはChrome DevToolsを調べて、リンクをクリックしたときに何らかのAJAXリクエストが行われているかどうかを確認できます。これを行っているファイルが見つかるまで、javascriptファイルを除外してみてください。

35
Darin Dimitrov

JavaScriptを使用してタグのリダイレクトイベントを防止した可能性があります。

例えば:

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

.preventDefault()はリダイレクトを防ぎます。

7
Maq

正しくDarrenによって与えられた、それは間違いなくリンクが期待どおりに機能するのを妨げているAJAX=リクエスト(postまたはget)を送信しているjavascriptコードです。

ただし、外部リソースを使用している場合は、minファイルのエラーを修正するのが難しい場合があります。

AJAX呼び出しを回避するためにインラインでjquery onclickイベントを使用することをお勧めします

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

_target='_blank'_と一緒にwindow.open('https://www.foo.bar/culrsteam', '_blank')を追加で使用できます

3
Paulo

これは、アドレスのhref属性内に転送プロトコルがない場合に発生する可能性があります。例として、<a href="localhost"></div>ではなく<a href="http://localhost"></div>としてローカルホストをリンクします。 Google Chromeがキャンセルされた場合、キャンセルされたステータスが表示されます。Safariでは、転送プロトコルが不明なため、リンクを開くアプリケーションを尋ねるダイアログが表示されます。 PHPで$_SERVER['HTTP_Host']へのリンクを設定するときのこの問題。

重要な点は、http://https://ftp://など、リンクの前に転送プロトコルを残すようにしてください。

1
djamahl

このコードを試してください...

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

これは古い質問ですが、同様の問題が発生したばかりなので、リクエストがブラウザによってブロックされている可能性があるようです。これは、現在安全でない(https)環境で安全でない(http)リソースにリンクしようとしている場合に発生する可能性があります。

Hrefが何であるかは明確ではありませんが、現在の環境が安全であれば、hrefがhttps(または//)であることを確認してください。

0
Bangkokian

親要素にe.preventDefault()を設定しました。

0