Signatur
Beschreibung
link() gehört zu den sogenannten HTML-Wrapper-Methoden von String, zusammen mit anchor(), bold(), big() und weiteren. Die Methode erzeugt nur einen neuen String der Form <a href="url">text</a>. Sie legt kein DOM-Element an und verändert den ursprünglichen String nicht.
Die Methode stammt aus der Anfangszeit von JavaScript, als HTML oft per document.write() zusammengesetzt wurde. Heute steht sie nur noch in Annex B der ECMAScript-Spezifikation. Dort sind Altlasten für Web-Browser aufgeführt, und die Methode ist ausdrücklich als veraltet gekennzeichnet.
Intern ersetzt link() im Argument url nur das doppelte Anführungszeichen (") durch ". Der Linktext selbst wird nicht maskiert. Zeichen wie <, > oder & landen also unverändert im Ergebnis. In neuem Code solltest du Links deshalb mit document.createElement("a") erzeugen, mit textContent befüllen und das Ziel über die Eigenschaft href setzen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $url Pflicht | string | Ziel des Links, wird als Wert des Attributs href eingesetzt. Andere Werte werden mit String() umgewandelt. Fehlt das Argument, entsteht href="undefined". Nur " wird zu " maskiert. |
Rückgabewert
<a href="url">str</a>, wobei str der ursprüngliche String ist.Beispiele
Einfacher Link-String
const text = "Zur Startseite";
const html = text.link("https://programmierung.net/");
console.log(html);
Nur Anführungszeichen in der URL werden maskiert
const html = "Suche <neu>".link('https://example.com/?q="js"&page=2');
console.log(html);
// Der Linktext "<neu>" wird NICHT maskiert, "&" in der URL ebenfalls nicht
Moderne, sichere Alternative per DOM
const createLink = (text, url) => {
const a = document.createElement("a");
a.href = url; // Attribut wird korrekt gesetzt
a.textContent = text; // Text wird nie als HTML gedeutet
return a;
};
const link = createLink("Dokumentation <v2>", "https://example.com/docs");
document.body.append(link);
console.log(link.outerHTML);
// Wichtig · Fallstricke
- Veraltet:
link()steht nur im Annex B der Spezifikation. Die Methode wird aus Kompatibilitätsgründen weiter unterstützt, sollte in neuem Code aber nicht mehr verwendet werden. Linter wie ESLint mit passendem Plugin können vor solchen Methoden warnen. - XSS-Gefahr: Der Linktext wird ungefiltert übernommen. Wenn Nutzereingaben als Text dienen und das Ergebnis per
innerHTMLoderdocument.write()eingefügt wird, kann schädliches Markup wie<img onerror=…>ausgeführt werden. - Gefährliche URLs: Das URL-Schema wird nicht geprüft. Die Methode akzeptiert auch
javascript:alert(1)alshref. Prüfe deshalb Adressen aus fremden Quellen, zum Beispiel mitnew URL()und einer Positivliste erlaubter Protokolle wiehttps:. Eine strikte Content Security Policy (CSP) kann zusätzlich schützen. - Außer
"wird nichts maskiert, auch nicht&,<oder'. - Kompatibilität: in allen Browsern und in Node.js vorhanden. Aufrufe auf
nulloderundefined(etwa percall) werfen einenTypeError.