Signatur
Beschreibung
Die Eigenschaft formTarget des HTMLButtonElement spiegelt das HTML-Attribut formtarget wider. Sie legt fest, in welchem Browsing-Kontext (Tab, Fenster oder <iframe>) die Serverantwort angezeigt wird, wenn das Formular über genau diesen Button abgeschickt wird. Damit überschreibt sie für diesen einen Absendevorgang das target-Attribut des zugehörigen <form>-Elements.
Gültige Werte sind die Schlüsselwörter _self (aktueller Kontext, Standard), _blank (neuer Tab bzw. neues Fenster), _parent (übergeordneter Kontext), _top (oberster Kontext) sowie der Name eines Fensters oder iframes (Attribut name). Existiert kein Kontext mit diesem Namen, öffnet der Browser einen neuen mit diesem Namen.
Typische Einsatzfälle: ein Formular mit mehreren Buttons, bei dem z. B. „Vorschau“ in einem neuen Tab öffnet, „Speichern“ aber im aktuellen Fenster bleibt; oder das Absenden in ein verstecktes bzw. eingebettetes iframe, um die Antwort ohne Seitenwechsel anzuzeigen.
Die Eigenschaft wirkt nur, wenn der Button vom Typ submit ist (Standard bei <button> innerhalb eines Formulars). Bei type="button" oder type="reset" wird sie ignoriert.
Rückgabewert
formtarget, z. B. "_blank" oder ein Fenster-/iframe-Name. Leerer String, wenn das Attribut nicht gesetzt ist. Beim Zuweisen wird das Attribut entsprechend gesetzt.Beispiele
Wert auslesen
// HTML:
// <form action="/bericht" target="_self">
// <button id="vorschau" formtarget="_blank">Vorschau</button>
// </form>
const btn = document.querySelector('#vorschau');
console.log(btn.formTarget);
console.log(btn.form.target);
Vorschau im neuen Tab, Speichern im aktuellen Fenster
const form = document.createElement('form');
form.action = '/artikel';
form.method = 'post';
const speichern = document.createElement('button');
speichern.textContent = 'Speichern';
const vorschau = document.createElement('button');
vorschau.textContent = 'Vorschau';
vorschau.formAction = '/artikel/vorschau';
vorschau.formTarget = '_blank'; // nur dieser Button öffnet neuen Tab
form.append(speichern, vorschau);
document.body.append(form);
console.log(vorschau.getAttribute('formtarget'));
Antwort in ein benanntes iframe laden
// HTML:
// <iframe name="ergebnis"></iframe>
// <form action="/suche"><input name="q"><button id="suchen">Suchen</button></form>
const suchen = document.querySelector('#suchen');
const iframe = document.querySelector('iframe[name="ergebnis"]');
// Ergebnis ohne Seitenwechsel im iframe anzeigen
suchen.formTarget = iframe.name;
iframe.addEventListener('load', () => {
console.log('Suchergebnis geladen');
});
// Wichtig · Fallstricke
- Nur für Submit-Buttons: Bei
type="button"odertype="reset"hatformTargetkeine Wirkung. - Kein Einfluss auf
form.submit(): Wird das Formular perform.submit()abgeschickt, gilt nurform.target. Nutzeform.requestSubmit(button), damitformTarget(sowieformAction,formMethod) des Buttons berücksichtigt wird. - Groß-/Kleinschreibung: Schlüsselwörter wie
_blankwerden ohne Groß-/Kleinschreibung erkannt; Fensternamen dagegen exakt. Ein Tippfehler im Namen öffnet einen neuen Tab statt das iframe zu nutzen. - Sicherheit: Bei
_blankerhalten moderne Browser implizitnoopener-Verhalten für Formulare nicht in allen Fällen gleich; bei Zielen auf fremden Ursprüngen ggf.rel="noopener"am Formular setzen. Popup-Blocker können neue Fenster unterdrücken, wenn das Absenden nicht durch eine Nutzeraktion ausgelöst wurde. - Kompatibilität: In allen modernen Browsern unterstützt (seit HTML5); das Gegenstück existiert auch als
HTMLInputElement.formTarget.