Frage

If you set the innerHTML of a <div> to innerHTML = '<a href="Something/C%23">C#</a><br />';

Was scheint tatsächlich 'gemacht' zu erhalten ist:

<div>
<a href="Something/C#">C#</a><br />
</div> 

Was ist der richtige Weg, um diese so auf den Link zu entkommen bleiben "Something / C% 23"?

UPDATE :
Ich bemerkte eine seltsame kleine Sache hier. Wenn Sie eine Funktion, um die Verbindung aufzubauen. Das zusätzliche% 25 Entkommen ist nicht erforderlich. Seltsam.
Ex.

function buildLink(tg, nm) {
  return '<a href="Something/' + tg + '">' + nm + '</a><br />';
}
War es hilfreich?

Lösung

Versuchen Sie folgendes:

<a href="Something/C%2523">C#</a><br />

Erweitern Sie den „%“ auf „%25“ und Sie bekommen, was Sie wollen. Dann wird die „%25“ auf den Prozentzeichen zurückgewandelt und die nachfolgende 23 ist nicht neu interpretiert.

Andere Tipps

Es ist erwähnenswert, dass viele Browser einen Link zu „Something/C%23“ als „Something/C#“ als „freundlich“ URL machen. Überprüfen Sie Ihre div mit Firebug oder ein ähnliches Werkzeug, um sicherzustellen, dass es tatsächlich falsch eingestellt werden.

Wenn ja, dann müssen Sie das Prozentzeichen als %25 entkommen:

innerHTML = '<a href="Something/C%2523">C#</a><br />';

Escape the Prozent selbst und Sie sollten es haben.

innerHTML = '<a href="Something/C%2523">C#</a><br />';
  

Was scheint tatsächlich 'gemacht' zu erhalten ist:

<a href="Something/C#">C#</a><br />

Nein. Wenn Sie über den Link bewegen Firefox finden Sie in der Statusleiste sagen, dass der Link zu „C #“ geht, aber es liegt. Eigentlich auf den Link klicken und Sie werden bei „C% 23“ am Ende (es rechts in der Adressleiste angezeigt werden).

  

Was ist der richtige Weg, um diese so auf den Link zu entkommen bleiben "Something / C% 23"?

Sie haben es das erste Mal richtig. "Something / C% 2523" verschlüsselt zu viel.

  

bemerkte ich eine seltsame kleine Sache hier. Wenn Sie eine Funktion, um die Verbindung aufzubauen. Das zusätzliche% 25 Entkommen ist nicht erforderlich.

in Funktion sein oder nicht, wird es nicht beeinflussen. Was wird beeinflussen sie, und könnten Sie hier verwirrend sein, ist, wenn Sie die Adressleiste verwenden eingeben javascript: URLs als Prüfmechanismus. javascript: URLs sind immer noch URLs und jedes% in ihnen -encoding wird einen Schritt rückgängig gemacht werden, bevor die JS-Interpreter auf dem Code sehen bekommen. Wenn Sie JS Stringliteral Flucht verwendet würden Sie dieses Problem nicht gerecht werden:

javascript:alert(document.body.innerHTML='<a href="Something/C\x2523">C#</a>')
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top