(Anmerkung des Übersetzers: Dieser Artikel löst das Problem, JS zum Öffnen einer neuen Seite beim Drücken der Strg -Taste zu öffnen.)
In der vereinfachten HTML5-Spezifikation dürfen mehrere Divs und/oder andere Elemente auf Blockebene in das A-Tag aufgenommen werden. Wickeln Sie nun die Blockelemente mit dem <a> Tag ein, können Sie das Problem lösen, das Sie ursprünglich mit JavaScript und Call Window.location benötigen, um die Funktion "Sage Redirect" zu erreichen.
Dieses Verpackungsformular unter Verwendung des <a> Tags funktioniert jedoch auch nicht gut - zum Beispiel gibt es einige <a> -Tags in einem Blockelement. In diesem Fall möchten wir nur zu einer bestimmten Adresse springen, wenn wir auf andere Teile als <a> im Elternteil klicken.
Natürlich kann die Verwendung eines einfachen Hörers wie Folgendes auch unsere Bedürfnisse erfüllen:
Die Codekopie lautet wie folgt:
monatelement.adDeVentListener ('Click', Funktion (e) {
// Jede URL -Adresse ist in Ordnung, oder Sie können einen anderen Code verwenden, um ihn anzugeben.
// Hier ist das `Data-src` DOM-Attribut dieses Elements (Attribut)
window.location = seltelement.get ('data-url');
});
... aber das hat manchmal eine schlechte Benutzererfahrung. Wenn Sie die Strg -Taste gedrückt halten (Mac ist die Befehlstaste) und mit der Maus klicken, wird der Link im selben (Registerkarte) Fenster geöffnet. Wenn Sie wissen, dass es dieses Problem gibt, müssen Sie darüber nachgedacht haben, wie Sie es lösen können. Wir können dies erreichen, indem wir einen kleinen Code ändern. Nehmen Sie sich etwas Zeit, um Ihren Hörer zu reparieren:
Die Codekopie lautet wie folgt:
monatelement.adDeVentListener ('Click', Funktion (e) {
// URL bekommen
var url = seltene.get ('Data-URL');
// Bestimmen Sie, ob die Strg -Taste gedrückt wurde
if (e.Metakey || e.ctrlkey || e.button === 1) {
window.open (URL);
} anders {
Fenster.location = URL;
}
});
Der ursprüngliche Autor hat diese Funktion auf der Website http://davidwalsh.name/ implementiert, und Sie sollten dies bei der Verwendung von window.location für die Seitenumleitung erinnern. Dies ist eine kleine Codeverbesserung, aber es ist sehr wichtig, die Benutzerfreundlichkeit zu verbessern!