2016-04-13 8 views
0

Ich habe einen Link, der ng-href verwendet, um eine neue Registerkarte zu öffnen (warum statt NG-Klick ist eine lange Geschichte mit dem Chrome-Popup-Blocker) . Das Beispiel kann here gefunden werden.Wie klicke ich einen Link mit ng-href, wenn die Eingabetaste gedrückt wird

Nun möchte Ich mag die Fähigkeit, fügen Sie den Link zu klicken, wenn die Enter-Taste gedrückt, so wird ich dieses Add ...

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

Alles wird auf der JS Seite rechts genannt, aber die Reiter öffnet nie. Irgendeine Idee, wie ich das erreichen kann?

Antwort

2

Sie durch Hinzufügen eines Vanille-Onclick-Handler den Link selbst, dass Sie sind erfolgreich Auslösen des click-Ereignis Link bestätigen kann, aber nicht die Navigation.

Das liegt daran, dass der Popup-Blocker, mit dem Sie arbeiten wollten, nicht so einfach umgangen werden kann; Browser unterscheiden genau aus diesem Grund zwischen benutzerinitiierten Klicks und Javascript-initiierten Klicks. Mozilla-Dokumentation, zum Beispiel:

Das Blubbern eines Klickereignisses bewirkt nicht, dass ein Element die Navigation initiiert, als ob ein echter Mausklick empfangen worden wäre.

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

Andere Browser verhalten sich ähnlich.

+0

Gibt es eine Möglichkeit, diesen Unterschied im Click-Ereignishandler zu sehen? Wenn dies beispielsweise ein Nicht-Klick-Ereignis ist, verwenden Sie $ window.open – Jackie

+0

'$ window.open' wäre ebenfalls popup-blockiert. Die einzige Möglichkeit, ein neues Fenster zuverlässig zu öffnen, besteht darin, einen einfachen alten Link zu einem Ziel zu verwenden. Sie können seine 'href' programmgesteuert festlegen, aber der Klick selbst muss vom Benutzer kommen. –

+0

Ich endete mit ng-href für die eine der Selenium-Test läuft (ich muss Popup-Block vermeiden) dann verwendet $ window.open für die Enter-Taste (kein Selenium-Test). Es wäre trotzdem nett, einen Weg zu finden, um dem Browser zu erlauben, auf den Link zu klicken, wenn Enter gedrückt wird. – Jackie