2015-02-26 4 views
5

Una domanda simile è stato chiesto (e ha risposto), ma c'erano nessuna risposta/soluzione su come risolvere il problemaPerché mi viene questa strana interruzione di riga "​"?

sto usando jQuery Mobile/I manubri per il mio progetto PhoneGap. Fino ad ora tutto sembrava funzionare bene. Ma improvvisamente ho questa strana interruzione di linea:

"​        " 

enter image description here

Io uso il seguente codice a fare l'elenco:

// HTML 
    <ul id="guideListView" data-role="listview" ></ul> 

    <script id="guideListTemplate" type="text/x-handlebars-template">​ 
     {{#if this}} 
      {{#each this}} 
      <li class="guide"> 
       <a href="{{guideUrl}}{{id}}" data-transition="slide" class="ui-nodisc-icon" > 
        <div class="name">{{name}}</div> 
        <div class="num-stores-container no-bold small">Stores: <span class="num-stores">{{storesCount}}</span></div> 
       </a> 
      </li> 
      {{/each}} 
     {{else}} 
      <li class="ui-btn">Sorry, no guides for <span class="city"></span></li> 
    {{/if}} 
    </script> 

    // JS 
    var template = Handlebars.compile($("#guideListTemplate").html()); 
    $('#guideListView').append(template(guides)); 
    $('#guideListView').listview().listview('refresh'); 

Qualcuno sa che cosa potrebbe causare questo?

aggiornamento
Ho provato con ("#guideListTemplate").html().trim() e $('#guideListView').html(template(guides));, ma che non fa alcuna differenza. Potrebbe essere un grande in jQuery Mobile?

un po 'più di debug e sembra che il problema potrebbe risiedere in questo:

<script id="guideListTemplate" type="text/x-handlebars-template">​ 
+0

possibile duplicato di [? Perché "​" essere iniettato nel mio HTML] (http://stackoverflow.com/questions/18478847/why -is-8203-being-iniettato-in-mio-html) – Brewal

+0

Um ... ok, ma come lo risolvo? – Steven

+0

Potrebbe essere in html o in una delle variabili nell'elemento 'li'. Controlla questo con un altro editor per vedere se si trova nel codice HTML o prova a generare le tue variabili. – Brewal

risposta

4

Ok, così ho trovato una soluzione from this thread.

Il problema è che quando si tenta di recuperare l'html di una stringa javascript, è possibile ottenere zero width space.

Unicode ha i seguenti caratteri di dimensione zero:

  • U + 200B spazio a larghezza zero
  • U + 200C di zero larghezza non falegname codice Unicode punto
  • U + 200D nullo falegname larghezza di codice Unicode punto
  • U + FEFF larghezza pari a zero no-break spazio di codice Unicode punto

Quindi, per risolvere il mio problema io uso delle espressioni regolari per rimuovere il charecter unicode:

var source = $("#guideListTemplate").html().replace(/[\u200B]/g, ''); 
4

Ho appena avuto lo stesso problema e trovato la soluzione. Il problema deriva dal fatto che copiate frammenti di codice da www nel nostro editor e talvolta risulta che un carattere come space viene copiato come entità numerica. L'editor analizza l'entità in modo che tutto sembri ordinario. La soluzione è trovare un modo per evidenziare entità numeriche (se non è integrato nell'editor, cercare un'estensione) ed eliminarlo. Regex/replace non è una soluzione.

1

Il problema per me era che il modello manubrio è stato salvato con codencoding "UTF-8 con BOM". Ma deve essere salvato come "UTF-8 senza BOM".

Se si utilizza un IDE Jetbrains come Webstorm, fare clic con il pulsante destro del mouse sul file e fare clic su "Remove BOM".

Si può leggere di più circa la differenza tra questa due qui: What's different between UTF-8 and UTF-8 without BOM?