Signatur
Beschreibung
Die Eigenschaft in1 der Schnittstelle SVGFECompositeElement liefert ein SVGAnimatedString-Objekt, das das in-Attribut des zugehörigen <feComposite>-Filterprimitivs widerspiegelt. Dieses Attribut legt die erste Eingabe der Komposition fest, also das Bild, das mit der zweiten Eingabe (in2) über den gewählten operator (over, in, out, atop, xor, lighter, arithmetic) verknüpft wird.
Mögliche Werte sind die Schlüsselwörter SourceGraphic, SourceAlpha, BackgroundImage, BackgroundAlpha, FillPaint, StrokePaint oder der result-Name eines vorherigen Filterprimitivs innerhalb desselben <filter>. Ist das Attribut nicht gesetzt, verwendet der Browser beim ersten Primitiv SourceGraphic, sonst das Ergebnis des vorherigen Primitivs.
Die Eigenschaft selbst ist schreibgeschützt – Sie können ihr kein neues Objekt zuweisen. Den Wert ändern Sie über in1.baseVal (beschreibbar) oder direkt mit setAttribute("in", …). in1.animVal liefert den aktuell wirksamen, ggf. per SMIL animierten Wert. Der Name lautet in1 statt in, weil in ein reserviertes Wort in JavaScript ist.
Rückgabewert
baseVal (beschreibbarer Attributwert, string) und animVal (schreibgeschützter, aktuell wirksamer Wert, string).Beispiele
Erste Eingabe eines feComposite auslesen
document.body.insertAdjacentHTML('beforeend', `
<svg width="200" height="200">
<filter id="f">
<feFlood flood-color="tomato" result="flut"/>
<feComposite id="comp" in="flut" in2="SourceGraphic" operator="in"/>
</filter>
<circle cx="100" cy="100" r="80" filter="url(#f)"/>
</svg>`);
const comp = document.getElementById('comp');
console.log(comp.in1 instanceof SVGAnimatedString);
console.log(comp.in1.baseVal);
console.log(comp.in1.animVal);
Eingabe zur Laufzeit umschalten
const comp = document.querySelector('feComposite');
const button = document.createElement('button');
button.textContent = 'Eingabe wechseln';
document.body.append(button);
button.addEventListener('click', () => {
// baseVal ist beschreibbar und aktualisiert das in-Attribut
comp.in1.baseVal = comp.in1.baseVal === 'flut' ? 'SourceAlpha' : 'flut';
console.log('in =', comp.getAttribute('in'));
});
Standardwert bei fehlendem Attribut erkennen
const svgNS = 'http://www.w3.org/2000/svg';
const comp = document.createElementNS(svgNS, 'feComposite');
// Ohne in-Attribut ist baseVal ein leerer String
const eingabe = comp.in1.baseVal || '(Standard: SourceGraphic bzw. vorheriges Ergebnis)';
console.log(eingabe);
comp.setAttribute('in', 'SourceGraphic');
console.log(comp.in1.baseVal);
// Wichtig · Fallstricke
- Nicht direkt zuweisen:
comp.in1 = 'SourceAlpha'hat keine Wirkung (im strikten ModusTypeError). Verwenden Siecomp.in1.baseVal = …odersetAttribute('in', …). - Namensabweichung: Das DOM-Attribut heißt
in, die JavaScript-Eigenschaftin1– beigetAttributealso'in'verwenden. - Ein leerer
baseValbedeutet nicht „keine Eingabe“, sondern den impliziten Standard (SourceGraphicbzw. Ergebnis des vorherigen Primitivs). - Verweist
inauf einen nicht existierendenresult-Namen, wird je nach Browser das vorherige Ergebnis bzw. transparentes Schwarz genutzt – Tippfehler fallen oft nicht sofort auf. BackgroundImage/BackgroundAlphawerden von den meisten Browsern nicht unterstützt.- Kompatibilität: in allen modernen Browsern (Chrome, Firefox, Safari, Edge) seit Langem verfügbar.