我正在尝试将Facebook Messenger嵌入Gatsby网站。在Chrome的检查器中,我可以看到一个id为“fb-root”的div,但其高度为0(宽度为视口的宽度),聊天小部件没有出现。
在我的Facebook页面的设置中使用安装工具 ->消息 ->添加Messenger到您的网站后,它会生成一些HTML代码,无法在Gatsby(或任何React框架)网站中使用。
使用该代码,我可以创建一个名为MessengerChat.js的自定义组件,其中包含以下内容:
然后,在gatsby-browser.js中,我可以使用以下代码:
在我的Facebook页面的设置中使用安装工具 ->消息 ->添加Messenger到您的网站后,它会生成一些HTML代码,无法在Gatsby(或任何React框架)网站中使用。
使用该代码,我可以创建一个名为MessengerChat.js的自定义组件,其中包含以下内容:
import React, { useEffect } from "react";
function MessengerChat() {
useEffect(() => {
window.fbAsyncInit = function () {
window.FB.init({
xfbml: true,
version: "v10.0",
});
};
(function (d, s, id) {
var js,
fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.src = "https://connect.facebook.net/en_US/sdk/xfbml.customerchat.js";
fjs.parentNode.insertBefore(js, fjs);
})(document, "script", "facebook-jssdk");
});
return (
<>
<div id="fb-root" />
<div
className="fb-customerchat"
attribution="page_inbox"
page_id="XXXXXXX"
/>
</>
);
}
export default MessengerChat;
然后,在gatsby-browser.js中,我可以使用以下代码:
import MessengerChat from "./src/MessengerChat";
export const wrapPageElement = ({ element }) => (
<>
{element}
<MessengerChat />
</>
);
有谁能帮忙提供一些建议,为什么这个应用程序显示不正确?
谢谢。