2015-11-07 3 views
5

Non riesco a ricreare questo comportamento nel motore del frammento di SO, ma mi sto imbattendo in un comportamento di manipolazione delle stringhe piuttosto strano in Chrome (v46).Strange String Behavior with Spaces in Chrome Console JavaScript

Date un'occhiata a questo screenshot della console Chrome JavaScript:

chrome example

A mio avviso, il risultato della fetta dovrebbe essere ( Here. Cioè una parentesi e quindi tre spazi. Non una parentesi e quindi uno spazio, che è quello che attualmente mi offre.

ho controllato gli stessi comandi esatte in Firefox, che danno i risultati che mi aspettavo:

firefox example

Può uno pensare a una spiegazione per la differenza di uscita? Sono denso?

Aggiornamento

In riferimento a questa di essere un duplicato di this, credo che questa domanda fa due cose in modo diverso:

  • E 'molto più chiaro nella sua interrogazione
  • Si chiede perché il fenomeni si verifica, piuttosto che come risolvere il problema
+0

Penso che potrebbe essere un bug. Il modo più semplice per riprodurre è inserire ''" (Here''. La console risponderà: '" "(Qui" '(il mio primo frammento ha 3 spazi, ma ne restituisce solo uno) – GolfWolf

+1

se copi il risultato da la console chrome js, e incolla vedrai che gli spazi saranno lì. X) –

+0

Hai ragione @JoelRamosMichaliszen, puoi approfondire perché? Sta facendo il debugging difficile – shennan

risposta

0

Non ci sono problemi a ctually. Anche io ho provato con Chrome v46, gli spazi sono uniti negli sviluppatori, il che significa che l'output/vista sembra che ci sia solo uno spazio, ma in realtà sono presenti 3 spazi. Controlla l'istantanea sottostante.

enter image description here

-1

Non illuderti: il comportamento di Chrome è corretta. È solo il font utilizzato nella console di debug che rende gli spazi contigui più sottili. Puoi provarlo controllando string.slice(1).length.

3

Questo è solo un problema di DevTools, che molto probabilmente è stato affrontato con la seguente patch http://src.chromium.org/viewvc/blink?view=revision&revision=201091

Si tratta di collasso più caratteri bianchi, come il rendering HTML è fatto per impostazione predefinita. La patch citata forza il rendering utilizzando white-space: pre.

+0

Mi piace questa risposta (+1) perché fornisce una spiegazione.Ma non vedo ancora perché l'output della console stia adottando spazi collassanti dal rendering HTML in linea. Dopo tutto, se digito ''

"' nella console, non mi offre un quadrato verde. – shennan

+0

Bene, non ho controllato il codice sorgente di DevTools, ma presumo che il testo fornito sia convertito in un nodo di testo, quindi < > e altri caratteri speciali HTML sono trattati come puro testo e questo viene inserito nella struttura del documento di DevTools. Quindi, il rendering HTML è ancora valido, solo i caratteri speciali sono "sfuggiti". – Rafael

+0

Questo esempio dovrebbe spiegare il comportamento: http://jsfiddle.net/udhd9pmt/ – Rafael