我正在为一个援助组织建立一个网站。他们希望在他们的页面上有一个捐赠模块。我正在努力实现这一点,但似乎不能让它发挥作用。
这是我试图使用的代码:
<div class="rnw-widget-container"></div>
<script src="https://tamaro.raisenow.com/XXX/latest/widget.js"></script>
<script>
window.rnw.tamaro.runWidget('.rnw-widget-container', {language: 'en'})
</script>
(来自https://support.raisenow.com/hc/en-us/articles/360001586658-Integrate-the-Widget-into-your-Page)
显然,我使用的是我收到的API令牌,而不是XXX。
import React from "react"
import {Helmet} from "react-helmet"
import Layout from "../components/Layout";
const SpendenPage = () => (
<Layout>
<Helmet>
<script src="https://tamaro.raisenow.com/xxx/latest/widget.js"></script>
<script>window.rnw.tamaro.runWidget('.dds-widget-container', {language: 'de'});</script>
</Helmet>
<div className="dds-widget-container"></div>
</Layout>
)
export default SpendenPage
提供此错误语法错误: /home/hanna/Code/brnhrz-cms/src/pages/jetzt-spenden.js:意外令牌,预期"}“(9:73)
我非常感谢在这方面的任何帮助。
发布于 2021-12-14 16:58:06
为了呈现像window.rnw.tamaro.runWidget('.dds-widget-container', {language: 'de'});
ins这样的表达式或方法调用,您需要用大括号包装它。
有关更多详细信息,请参阅这里。
基本上,只需将以下内容从以下位置更改:
<script>window.rnw.tamaro.runWidget('.dds-widget-container', {language: 'de'});</script>
至:
<script>{window.rnw.tamaro.runWidget('.dds-widget-container', {language: 'de'})}</script>
至少您应该不再有语法错误了。
发布于 2021-12-14 19:01:17
您需要将脚本的内容封装在backticks (``
)和花括号({}
)之间:
<Helmet>
<script src="https://tamaro.raisenow.com/xxx/latest/widget.js"></script>
<script type='text/javascript' async defer>
{` window.rnw.tamaro.runWidget('.dds-widget-container', {language: 'de'}) `}
</script>
</Helmet>
请注意,(Server-Side 和其他全局对象限制使用Gatsby和SSR。 R编码),它可能会在gatsby build
期间中断编译。如果它坏了,您可能需要在使用window
之前添加以下条件
typeof window !== "undefined"
您可以在这个CodeSandbox:https://codesandbox.io/s/l9qmrwxqzq中检查一个示例
相关专题:
https://stackoverflow.com/questions/70352551
复制相似问题