【发布时间】:2020-08-18 17:24:40
【问题描述】:
我正在尝试将 amp-analytics 脚本放入从 Next.js 生成的 amp 页面中,但由于 & 字符,SetInnerHTML 很危险地破坏了 JSON 配置。
代码如下:
<amp-analytics id='analytics1' type='googleanalytics'>
<script type='application/json' dangerouslySetInnerHTML={{ __html: `
{
"vars": {
"account": "XX-XXXXXXXX-X"
},
"requests": {
"experiment": "\${pageview}&xid=\${xid}&xvar=\${xvar}"
}
}
` }} />
</amp-analytics>
如您所见,& 字符已转换为 \u0026,现在 amp-analytics 标记不起作用。
我也试过这个:
<amp-analytics id='analytics1' type='googleanalytics'>
<script type='application/json' dangerouslySetInnerHTML={{ __html: `
{
"vars": {
"account": "XX-XXXXXXXX-X"
},
"requests": {
"experiment": "${JSON.stringify('${pageview}&xid=${xid}&xvar=${xvar}')}"
}
}
` }} />
</amp-analytics>
关于如何解决这个问题的任何想法?
事实证明,这是因为 Next.js 中的 AMP Optimizer — github.com/ampproject/amp-toolbox/pull/649 而现在我必须为这种情况找到解决方案
【问题讨论】:
-
在第二次尝试中删除
${JSON.stringify(...)}周围的引号。 -
@Al.G.,在这种情况下,我得到与第一次尝试相同的结果。我还尝试在不同的沙箱中重现它——react、react with amp、next.js 沙箱——它在任何地方都能正常工作,它返回有效且正确的 JSON。不知道为什么在我的项目中它不能正常工作
-
看起来是 next.js 放大器优化器问题,因为它在非放大器页面上运行良好...
-
好的,那我不知道是什么原因造成的。回滚了我的编辑。
标签: next.js google-optimize amp-analytics