2016-07-17 6 views

Antwort

7

Kurze Antwort ist ja, aber wie hängt von Ihrem Kontext ab. Wenn Sie vue-router verwenden, während ich in einem aktuellen Projekt bin, möchten Sie dem äußersten Element hinzufügen, auf das Sie angewendet werden möchten. In meinem Fall verwende ich das ursprüngliche div-Element von app.vue entry point.

Es gibt einen Haken, den ich glaube, ist eine harte Anforderung, das Element muss innerhalb der potenziell fokussierbaren Elemente sein. Die Art, wie ich damit umgehe, ist das Setzen eines -1 Tabindexes und das Deklarieren meiner Super-Hotkeys (hauptsächlich für Debug-Zwecke) auf dem Elternelement in meiner App.

<template> 
    <div 
    id="app-main" 
    tabindex="-1" 
    @keyup.enter="doSomething" 
    > 
    <everything-else></everything-else> 
    </div> 
</template> 

EDIT:

Als Randbemerkung, habe ich auch noch einen Hauch von zusätzlichen Konfigurations meiner vue-Router das richtige Element, um sicherzustellen, fokussiert ist, wenn ich Seiten übergehen. Dies ermöglicht, dass der Bildlauf nach Bildlauf/Bildlauf bereits im rechten Abschnitt liegt, da der Inhaltsbereich der einzige Bildlaufabschnitt ist. Sie müssten auch das tabindex = "- 1" zum app-content-Element hinzufügen.

router.afterEach(function (transition) { 
    document.getElementById('app-content').focus(); 
}); 

und die Basis meiner App-Inhaltskomponente:

<template> 
    <div id="app-content" tabindex="-1"> 
    <router-view 
     id="app-view" 
     transition="app-view__transition" 
     transition-mode="out-in" 
    ></router-view> 
    </div> 
</template> 
+0

Diese Antwort scheint eine angemessene Anzahl von Ansichten zu erhalten und sollte noch ziemlich relevant sein, aber einen Blick auf den folgenden Link, wenn Sie nehmen möchte vollständig globale globale Fenster-Hotkeys (ungefähr auf halbem Weg): https://vuejsdevelopers.com/2017/05/01/vue-js-cant-help-head-body/ –

Verwandte Themen