【发布时间】:2025-11-26 16:35:01
【问题描述】:
我正在尝试在表单中实现新的 Facebook Checkbox 插件,但以一种奇怪的方式,我无法让它在屏幕上显示。所以我不会在客户端收到错误,但 iframe 是隐藏的。
这是代码的简化示例:
<html>
<head>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '1815704925309469',
xfbml : true,
version : 'v2.6'
});
FB.Event.subscribe('messenger_checkbox', function(e) {
console.log("messenger_checkbox event");
console.log(e);
if (e.event == 'rendered') {
console.log("Plugin was rendered");
} else if (e.event == 'checkbox') {
var checkboxState = e.state;
console.log("Checkbox state: " + checkboxState);
} else if (e.event == 'not_you') {
console.log("User clicked 'not you'");
} else if (e.event == 'hidden') {
console.log("Plugin was hidden");
}
});
};
(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 = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk')
);
function confirmOptIn() {
FB.AppEvents.logEvent('MessengerCheckboxUserConfirmation', null, {
'app_id':'1815704925309469',
'page_id':'1711063052543482',
'ref':'shopping-cart-company',
'user_ref':'1234'
});
}
</script>
<div class="col-md-7">
<div class="fb-messenger-checkbox"
origin=https://shopping-cart-company.herokuapp.com/index.html
page_id=1711063052543482
messenger_app_id=1815704925309469
user_ref="1234"
prechecked="true"
allow_login="true"
size="large">
</div>
</div>
<body>
<input type="button" onclick="confirmOptIn()" value="Confirm Opt-in"/>
</body>
开发控制台中没有错误。仅记录插件被隐藏:
【问题讨论】:
-
您是否查看过浏览器的开发者控制台?它说什么?
-
开发控制台中没有错误。我在帖子中添加了状态日志的屏幕截图
-
我发现对我造成问题的一件事是父 div 隐藏在我的案例中,这导致它们将容器宽度设为 0px。将相同的按钮移动到我的 5 页向导的第一部分修复了它。确保您的 div 可见且宽度 > 0px。
标签: javascript jquery html facebook messenger