Domanda

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

Ciò che sembra effettivamente essere "renderizzato" è:

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

Qual è il modo corretto per sfuggire a questo in modo che il link rimanga " Something / C% 23 " ?

Aggiorna :
Ho notato una cosa strana qui. Se si utilizza una funzione per creare il collegamento. Non è necessario l'escape% 25 in più. Strano.
ex.

function buildLink(tg, nm) {
  return '<a href="Something/' + tg + '">' + nm + '</a><br />';
}
È stato utile?

Soluzione

Prova questo:

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

Espandi " % " a " %25 " e ottieni quello che vuoi. Quindi il & Quot; 23 & Quot; viene riconvertito nel carattere percentuale e il successivo <=> non viene reinterpretato.

Altri suggerimenti

Vale la pena notare che molti browser renderizzeranno un collegamento a " Something/C%23 " come " Something/C# " come " amichevole " URL. Controlla il tuo div usando Firebug o uno strumento simile per assicurarti che non sia stato impostato correttamente.

In tal caso, devi evitare il segno di percentuale come %25:

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

Scappa dalla percentuale stessa e dovresti averla.

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

Ciò che sembra effettivamente essere "renderizzato" è:

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

No. Passando con il mouse sopra il collegamento Firefox ti dirà nella barra di stato che il collegamento passa a & Quot; C # & Quot ;, ma sta mentendo. In realtà fai clic sul link e finirai su & Quot; C% 23 & Quot; (apparirà nella barra degli indirizzi).

  

Qual è il modo corretto per sfuggire a questo in modo che il link rimanga " Something / C% 23 " ?

Avevi ragione la prima volta. & Quot; Qualcosa / C% 2.523 quot &; è codificato troppo.

  

Ho notato una cosa strana qui. Se si utilizza una funzione per creare il collegamento. Non è necessaria l'escape% 25 in più.

Essere in una funzione o no non la influenzerà. Ciò che lo influenzerà e potrebbe confonderti qui è se stai usando la barra degli indirizzi per digitare javascript: URL come meccanismo di test. javascript: gli URL sono ancora URL e qualsiasi% di codifica in essi verrà annullata di un passo prima che l'interprete JS dia un'occhiata al codice. Se si usasse l'escaping letterale della stringa JS non si incontrerebbe questo problema:

javascript:alert(document.body.innerHTML='<a href="Something/C\x2523">C#</a>')
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top