2012-05-22 19 views
5

Ho una domanda sull'esecuzione di caratteri in JavaScript che spero tu possa essere in grado di aiutarti. Dire se ho il seguente codice JavaScript:Escaping caratteri in JavaScript virgolette singole e doppie

document.write("<img src=\"http://www.google.com\" />"); 

Ora nell'esempio di cui sopra, si può vedere che ho iniziato la document.write con virgolette " e, quindi, il motivo per cui ho bisogno di sfuggire alle citazioni all'interno del < img src="" /> per garantire che JavaScript pensa ancora che sia una stringa.

Ma nell'esempio seguente è possibile vedere che ho utilizzato una virgola singola ' per iniziare l'istruzione document.write. La mia domanda è: devo ancora sfuggire alle virgolette? So che la dichiarazione funzionerà senza questo, ma qual è la migliore pratica?

document.write('<img src=\"http://www.google.com\" />'); 

Il motivo che mi chiedo è che ho un'istruzione condizionale che ho scritto che spara un'immagine (come per la linea di cui sopra), ma non sembra funzionare e per escludere tutte le possibilità come a ciò che potrebbe causare questo. Mi imbatto in cose del genere praticamente ogni giorno, quindi qualsiasi aiuto sarebbe molto apprezzato. Questa potrebbe essere una domanda stupida, quindi scusate in anticipo ...

+0

Io voto che questa domanda sia non contrassegnato come un duplicato perché quello se si riferisce a come un primario non richiede NOR copre la discussione su "best practice", mentre in (questo) post il problema delle migliori pratiche è coperto in dettagli corretti. –

risposta

13

Quando si utilizzano le virgolette singole è sufficiente sfuggire alle virgolette singole, non alle doppie virgolette.

(EDIT: E viceversa)

+0

grazie. C'è qualcosa di sbagliato nell'uscire dalle virgolette nel secondo esempio? Cosa succederebbe se lo facessi lo stesso? – zik

+0

Niente di sbagliato (tranne che google.com non restituisce un'immagine!) – Tim

+0

Haha, sì, forse un cattivo esempio, ma vedi cosa stavo guidando. Grazie per la risposta. – zik

1

document.write('<img src="http://www.google.com" />'); funzionano bene.

stesso vale per document.write("<img src='http://www.google.com' />");

3
document.write('<img src="http://www.google.com" onClick="foo(\'bar\');" />'); 

Hai solo bisogno di fuggire lo stesso tipo di citazioni che si sta utilizzando.

+0

hey, e se ho 'var data =" bar "'; e voglio usare questa variabile al posto di '\ 'bar \''?Ho capito cosa stai cercando di dire qui ... ma la mia condizione è tale che devo usare la variabile al posto di '\ bar \' –

+0

@Digital_at_heart - Non importa le quotazioni. ''';' – OptimusCrime

0
<html> 
<body> 

<script type="text/javascript"> 

document.write(escape("<img src=\"http://www.google.com\" />")); 

</script> 

</body> 
</html> 
3

A questo punto, hai l'immagine: non c'è bisogno di fuggire citazioni che non si sta usando come delimitatori di quel particolare stringa. Tuttavia: qual è la pratica migliore è una storia diversa. Conosco alcune persone che ti diranno che "evadere sempre le citazioni" è una buona abitudine. Non sono d'accordo. A differenza di altri linguaggi JavaScript è ragionevolmente clemente quando si tratta di caratteri sfuggiti: nel secondo esempio, i backslash non verranno stampati.

Questo non è sempre il caso, quindi il mio suggerimento sarebbe: essere coerenti con le virgolette usate (singole | doppie) e sfuggire solo a quelle che hanno bisogno di essere scappate. A seconda di quali altre lingue utilizzi, potresti pensare un po 'su quali citazioni utilizzare. Ad esempio, se usi PHP, mantieni le virgolette singole, perché le doppie virgolette fanno più del semplice delimitare una stringa. Se sei abituato a scrivere linguaggi C-like (o Java), meglio mantenere l'abitudine di usare virgolette doppie, poiché c'è una differenza ancora maggiore tra virgolette singole e doppie in quelle lingue

+0

Grazie per questo. Tendo ad usare le virgolette in JavaScript per motivi di coerenza, ma suppongo che le virgolette singole per un linguaggio come JavaScript siano più facili da seguire! – zik

+2

Nel complesso, sì, specialmente se crei nuovi elementi come una stringa, potresti facilmente attaccare con virgolette doppie e usare 'var newImg = document.createElement (" img ");' e assegna i suoi attributi in questo modo: 'newImg.src =" http://www.google.com ";' evitando così in modo preciso l'escape dei delimitatori di stringhe o la combinazione di tipi di virgolette. –

Problemi correlati