2016-04-13 2 views
0

ng-hrefを使用して新しいタブを開くリンクがあります(ng-clickの代わりにChromeのポップアップブロッカーを使用する長い話です) 。この例はhereです。Enterキーを押したときにng-hrefを使用してリンクをクリックするには

は今、私は

link: function() { 
    $(document).on("keyup", function(event) { 
    if (event.which == 13) { 
     $("#clicking").trigger('click'); 
    } 
    }); 
} 

すべてはJS側の右側に呼び出されるが、タブが決して開かない...私はこれを追加入力するキーがそう押されたリンクをクリックする機能を追加したいと思います。どのように私はこれを達成することができますか?

答えて

2

であるリンク自体にバニラのonclickハンドラを追加すると、リンクのクリックイベントは正常にトリガされますが、ナビゲーションは正常にトリガされます。

これは、回避しようとしていたポップアップブロッカーを簡単に回避できないためです。ブラウザは、ユーザーが開始したクリックとその理由のためにjavascriptで開始されたクリックを区別します。

clickイベントのバブリングによって、実際のマウスクリックを受けたかのように、要素がナビゲーションを開始することはありません。

https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click

他のブラウザでも同様に動作します。

+0

クリックイベントハンドラでこの違いを確認する方法はありますか?たとえば、これが非クリックイベントの場合、$ window.open – Jackie

+0

'$ window.open'もポップアップブロックされます。新しいウィンドウを確実に開くための唯一の方法は、ターゲットとプレーンな古いリンクを使用することです。あなたは 'href'をプログラムで設定することができますが、クリック自体はユーザから来なければなりません。 –

+0

セレンテストを実行するためにng-hrefを使用することになりました(私はポップアップブロックを避ける必要があります)。次にEnterキー(セレンテストなし)に$ window.openを使用しました。 Enterを押すと、ブラウザがリンクをクリックできるようにする方法を見つけることは、まだ良いことです。 – Jackie

関連する問題