Signatur
Beschreibung
Die Eigenschaft cursor des Wörterbuchs MediaTrackSettings gibt an, wie der Mauszeiger im Videotrack einer Bildschirmaufnahme tatsächlich dargestellt wird. Solche Aufnahmen entstehen mit navigator.mediaDevices.getDisplayMedia(). Den Wert liest man mit MediaStreamTrack.getSettings() aus. Er zeigt den aktuellen Zustand, also nicht unbedingt den Wunsch, den die Anwendung angefordert hat.
Mögliche Werte:
"always": Der Zeiger ist immer im Video zu sehen, sofern er sich im erfassten Bereich befindet."motion": Der Zeiger erscheint nur, während er sich bewegt. Nach kurzer Ruhe wird er ausgeblendet."never": Der Zeiger wird nie ins Video übernommen.
Die Eigenschaft ist nützlich für Bildschirmaufzeichnungen, Anleitungsvideos oder Fernwartung. Dort hängt die Bedienbarkeit oft davon ab, ob der Betrachter den Zeiger sieht. Die Anwendung kann über die Einschränkung (Constraint) cursor in getDisplayMedia() ein Verhalten anfordern. Mit getSettings().cursor prüft sie danach, was der Browser tatsächlich umsetzt. So lässt sich die Oberfläche anpassen, etwa mit einem eigenen Zeiger-Overlay, wenn "never" gemeldet wird.
Ob der Browser die Eigenschaft überhaupt kennt, verrät navigator.mediaDevices.getSupportedConstraints().cursor. Bei Kamera- oder Mikrofon-Tracks aus getUserMedia() ist cursor nicht vorhanden.
Rückgabewert
undefined, wenn der Browser die Eigenschaft nicht unterstützt oder es sich nicht um einen Bildschirmaufnahme-Track handelt.Beispiele
Tatsächliche Zeiger-Einstellung nach getDisplayMedia() auslesen
const startCapture = async () => {
const stream = await navigator.mediaDevices.getDisplayMedia({
video: { cursor: 'always' }, // Wunsch: Zeiger immer anzeigen
audio: false
});
const [videoTrack] = stream.getVideoTracks();
const { cursor } = videoTrack.getSettings();
console.log(`Zeiger-Modus: ${cursor ?? 'nicht unterstützt'}`);
return stream;
};
document.querySelector('#start').addEventListener('click', startCapture);
Unterstützung prüfen und Oberfläche anpassen
const supportsCursor = navigator.mediaDevices.getSupportedConstraints().cursor === true;
const recordScreen = async () => {
const stream = await navigator.mediaDevices.getDisplayMedia({
video: supportsCursor ? { cursor: 'motion' } : true
});
const [track] = stream.getVideoTracks();
const cursor = track.getSettings().cursor;
// Hinweis einblenden, wenn der Zeiger nicht im Video zu sehen ist
const hint = document.querySelector('#cursor-hint');
hint.hidden = cursor !== 'never';
console.log('Unterstützt:', supportsCursor, '| Modus:', cursor);
};
document.querySelector('#record').addEventListener('click', recordScreen);
Zeiger-Modus nachträglich per applyConstraints() ändern
const toggleCursor = async (track) => {
const current = track.getSettings().cursor;
const next = current === 'never' ? 'always' : 'never';
try {
await track.applyConstraints({ cursor: next });
console.log(`Vorher: ${current}, jetzt: ${track.getSettings().cursor}`);
} catch (err) {
console.warn('Änderung nicht möglich:', err.name);
}
};
const stream = await navigator.mediaDevices.getDisplayMedia({ video: true });
await toggleCursor(stream.getVideoTracks()[0]);
// Wichtig · Fallstricke
- Browser-Kompatibilität: Die Eigenschaft wird nur uneinheitlich unterstützt. Viele Browser ignorieren die
cursor-Einschränkung und liefern dannundefinedingetSettings(). Vor der Nutzung sollte mangetSupportedConstraints().cursorprüfen und eine Alternative vorsehen. - Nur ein Wunsch: Die in
getDisplayMedia()übergebene Einschränkung ist eine Empfehlung. Der Browser oder das Betriebssystem kann anders entscheiden. Deshalb sollte man immergetSettings()auswerten, statt vom angeforderten Wert auszugehen. "motion"ist ungenau festgelegt: Wie lange der Zeiger nach der letzten Bewegung sichtbar bleibt, bestimmt die jeweilige Umsetzung.- Nur bei Bildschirmaufnahmen: Bei Tracks aus
getUserMedia()odercanvas.captureStream()gibt es diese Eigenschaft nicht. - Sicherheitskontext:
getDisplayMedia()funktioniert nur in sicheren Kontexten (HTTPS), braucht eine Nutzeraktion und muss vom Nutzer bestätigt werden. - Datenschutz: Ein sichtbarer Zeiger kann in Aufzeichnungen verraten, wo der Nutzer hinschaut oder was er anklickt. Bei sensiblen Vorführungen kann
"never"sinnvoll sein.