Pergunta

Estou tendo problemas em escapar das citações únicas e duplas dentro do hrefS Javascript Função.

Eu tenho esse código JavaScript dentro href. É como -

<a href = "javascript:myFunc("fileDir/fileName.doc", true)"> click this </a>

Agora, como as citações duplas dentro da citação dupla não são válidas, preciso escapar das citações duplas internas para que ela seja tratada como parte da corda - então, eu preciso fazer isso -

<a href = "javascript:myFunc(\"fileDir/fileName.doc\" , true)"> click this </a>

O problema é que mesmo o código acima não está funcionando. O código JavaScript está sendo truncado em - myFunc(

Também tentei com a variação de cotação única - mas mesmo isso não parece funcionar (o que significa que, se eu tiver uma única citação dentro da minha string literal, o código será truncado).

Isso é o que eu fiz com uma única citação:

<a href = 'javascript:myFunc("fileDir/fileName.doc" , true)'> click this </a>

Isso funciona, mas se eu tiver uma única cotação dentro da string, o código será truncado da mesma maneira que o de cotações duplas uma.

Foi útil?

Solução

Usar as barras para escapar das cotações é como funciona no JavaScript, mas você não está realmente escrevendo código JavaScript lá: você está escrevendo HTML. Você pode fazer isso usando o método de fuga HTML: entidades de personagens.

&quot;  // "
&#39;   // '

Por exemplo:

<a href="javascript: alert('John O&#39;Brien says &quot;Hi!&quot');">...</a>

Outras dicas

Como prática recomendada geral, use duas citações em HTML e cita única em JavaScript. Isso resolverá a maioria dos seus problemas. Se você precisar de uma quadra única em uma string javaScript, você pode simplesmente escapar dela usando ' - e provavelmente não deve estar aninhando as cordas literais mais profundas do que isso.

Como observado em outros lugares, as entidades HTML são uma possibilidade se o código for incorporado no HTML. Mas você ainda terá que lidar com as cotações que escapam em strings em seus arquivos de origem JavaScript, por isso é melhor ter apenas uma estratégia consistente para lidar com o JavaScript.

Se você estiver seguindo essa estratégia e acabar com uma citação dupla incorporada no seu JavaScript incorporado no seu HTML, basta usar a entidade HTML ".

Caso alguém precise escapar de algo assim:

<a href="www.google.com/search?q="how+to+escape+quotes+in+href""</a>

Você pode usar o código ASCII para cotações duplas %22:

<a href="www.google.com/search?q=%22how+to+escape+quotes+in+href%22"</a>

É especialmente útil se você passar o link para JavaScript do PHP

Normalmente, esse tipo de código está funcionando sem problemas:

<a href="#" onclick="myFunc('...')">Click this</a>

Com este código, você tem algum problema?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top