【问题标题】:Why am I getting this weird “​” line break?为什么我会得到这个奇怪的“​”换行符?
【发布时间】:2015-04-28 14:32:03
【问题描述】:

已经提出(并回答)了一个类似的问题,但没有关于如何解决它的答案/解决方案

我正在为我的 Phonegap 项目使用 jQuery Mobile / Handlebars。到目前为止,一切似乎都运行良好。但是突然间我得到了这个奇怪的换行符:

"​                               "

我使用以下代码制作列表:

    // 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');

有人知道是什么原因造成的吗?

更新
我试过使用("#guideListTemplate").html().trim()$('#guideListView').html(template(guides));,但这并没有什么区别。这在 jQuery Mobile 中会很重要吗?

再调试一下,看来问题可能出在:

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

【问题讨论】:

  • 嗯...好的,但是我该如何解决呢?
  • 它可以在 html 中,也可以在 li 元素中的变量之一中。用另一个编辑器检查它是否在 html 中,或者尝试输出你的变量。
  • 我正在使用 PHP Storm 和我使用的代码,正如您在上面看到的那样。它只发生在 UL 和第一个元素之间。 (我会更新我的照片)
  • 那么由于 li 的一个变量,它可能被插入到你的一些 li 之前(这里是第一个和中间的一个)

标签: jquery jquery-mobile handlebars.js


【解决方案1】:

好的,所以我找到了解决方案from this thread

问题在于,当您尝试获取 javascript 字符串的 html 时,您可能会得到zero width space

Unicode 具有以下零宽度字符:

  • U+200B 零宽度空间
  • U+200C 零宽度非连接 Unicode 代码点
  • U+200D 零宽度连接符 Unicode 代码点
  • U+FEFF 零宽度不间断空格 Unicode 代码点

为了解决我的问题,我使用正则表达式删除 unicode 字符:

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

【讨论】:

    【解决方案2】:

    我刚刚遇到了同样的问题并找到了解决方案。问题源于我们从 www 复制粘贴 sn-ps 到我们的编辑器中,有时它会导致像 space 这样的字符被复制为数字实体。编辑器解析实体,所以一切看起来都很普通。解决方案是找到一种方法来突出显示数字实体(如果它不是您的编辑器中内置的,请查找扩展名)并将其删除。 正则表达式/替换不是解决方案

    【讨论】:

      【解决方案3】:

      对我来说,问题是 Handlebar 模板是使用文件编码“UTF-8 with BOM”保存的。但需要保存为“UTF-8 without BOM”

      如果您使用的是 Webstorm 等 Jetbrains IDE,只需右键单击该文件并单击“删除 BOM”。

      您可以在此处阅读有关这两者之间区别的更多信息:What's different between UTF-8 and UTF-8 without BOM?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-27
        • 2014-08-12
        • 1970-01-01
        • 2013-05-12
        • 2011-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多