我有脸书上的代码
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
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'));</script>
<!-- Your Chat Plugin code -->
<div class="fb-customerchat"
attribution="install_email"
page_id="My_page_id"
theme_color="#4A50E1">
</div>它一见钟情,但如果我移动到另一个页面(使用turbolinks),Facebook聊天就会消失。我尝试了Turbolinks 5.0 and Facebook SDK的解决方案,但在这种情况下,Facebook聊天却一次又一次地产生。有什么想法吗?
发布于 2022-01-19 10:20:54
index.html:(替换"ID")
<div id="fb-root" data-turbolinks-permanent></div>
<div id="fb-customer-chat" data-turbolinks-permanent class="fb-customerchat" page_id="<ID>" attribution="biz_inbox"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
xfbml: true,
version: 'v11.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'));
</script>application.js:
let fbRoot;
function saveFacebookRoot() {
const temp = document.querySelector("#fb-root");
if (temp) {
temp.querySelector("[data-turbolinks-no-cache]")?.remove();
fbRoot = temp;
temp.remove();
}
}
function restoreFacebookRoot() {
if (fbRoot != null) {
const temp = document.querySelector("#fb-root");
if (temp) {
temp.replaceWith(fbRoot);
} else {
document.querySelector("body").append(fbRoot)
}
}
}
document.addEventListener("turbolinks:request-start", saveFacebookRoot);
document.addEventListener('turbolinks:load', restoreFacebookRoot}https://stackoverflow.com/questions/67178773
复制相似问题