gpt4 book ai didi

node.js - 这个字符 ""是什么?为什么它会导致换行?

转载 作者:太空宇宙 更新时间:2023-11-04 01:13:24 31 4
gpt4 key购买 nike

我正在使用handlebars + hbs(遵循 block /扩展帮助器示例)为我的 Node 应用程序渲染html。由于某种原因,我的一个 div 被推下 1 行。

我检查了chrome中的dom检查器,有一行带双引号:

hated double quotes

导致此问题的原因:
hated double quotes result

当我从 dom 检查器中删除双引号(按退格键或删除键)时,布局是正确的:
enter image description here

enter image description here

这到底是怎么回事?它是非打印字符还是其他什么? html/模板中没有任何内容,并且空格(或任何字符)不应导致 block 级元素更改位置,对吗?

这是一些代码:
Layout.html的相关部分

<div id="details" class="east">{{{block "east"}}}</div>

模板:

<div id="details-title">
<h3 class="title elide" style="height:26px;">{{Title}}</h3>
</div>
<div id="details-body" class="content text">
<img class="card" src="{{ImagePath}}" />
<div>
<span class="type">{{Type}}</span>
</div>
<div class="body">
{{{Body}}}
</div>
</div>

block + 扩展助手:( from the hbs example )

hbs.registerHelper("extend", function (name, context) {
var block = blocks[name];
if (!block) {
block = blocks[name] = [];
}

if (typeof context.fn !== "undefined") {
block.push(context.fn(this));
}
});

hbs.registerHelper("block", function (name) {
var val = (blocks[name] || [])
.filter(function () { return true })
.join("\n");

// clear the block
blocks[name] = [];
return val;
});

更新显然,这是char 65279 ,我的预编译 Handlebars 模板在渲染时都会将其作为第一个字符发出。

最佳答案

所以我添加了一个 hack 来删除在模板输出中显示为第一个字符的 BOM:

var html = detailTemplate(res.data);
if (html.charCodeAt(0) === 65279) { // hack to fix precompiled hbs template bug
html = html.substring(1);
}
$("#details").html(html);

事实证明, block +扩展助手与该问题无关。我假设这是我正在使用的编码的问题,但我不确定如何更改它。上面的代码解决了这个问题。

关于node.js - 这个字符 ""是什么?为什么它会导致换行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13928218/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com