我有这个脚本,我把它放在GWT nocache.js
之上<head>
<script type="text/javascript" language="javascript">
(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/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<script type="text/javascript" language="javascript" src="app/app.nocache.js"></script>
</head>
<body>
<div id="fb-root"></div>
<div id="rootPanel"></div>
</body>
在我网站的一个页面上(我使用的是Errai-UI)
这是补充:
HTMLPanel likebox = new HTMLPanel("<div class='fb-like-box' " +
"data-href='http://www.facebook.com/platform' data-width='595' " +
"data-show-faces='true' data-stream='true' data-header='true'></div>");
likepanel.add(likebox);
我面临的问题是,在我的GWT应用程序中,当网站落在注入此面板的页面上时,即使我查看DOM,{{1在DOM树中存在。
有效的是我需要在当前页面上进行整页刷新(在DevMode中):例如:<div class='like-box' ...>
此外,页面刷新技巧仅适用于DevMode,但在编译时无法完成。
答案 0 :(得分:4)
根据Facebook Javascript SDK文档,有必要将div放在页面顶部,即脚本上方。
JavaScript SDK要求fb-root元素出现在页面中。
不能使用display:none或visibility:hidden隐藏fb-root元素,否则SDK的某些部分将无法在Internet Explorer中正常工作。
SDK将元素插入到fb-root中,这些元素期望相对于主体或相对于靠近页面顶部的元素定位。最好是fb-root元素不在position:absolute或position:relative的元素中。如果必须将fb-root元素放在定位元素内,那么您还应该给它一个靠近主体顶部的位置,或者SDK的某些部分可能无法正常工作。
此代码应直接放在开始标记之后。
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
appId : 'YOUR_APP_ID', // App ID from the App Dashboard
channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File for x-domain communication
status : true, // check the login status upon init?
cookie : true, // set sessions cookies to allow your server to access the session?
xfbml : true // parse XFBML tags on this page?
});
// Additional initialization code such as adding Event Listeners goes here
};
// Load the SDK's source Asynchronously
// Note that the debug version is being actively developed and might
// contain some type checks that are overly strict.
// Please report such bugs using the bugs tool.
(function(d, debug){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all" + (debug ? "/debug" : "") + ".js";
ref.parentNode.insertBefore(js, ref);
}(document, /*debug*/ false));
</script>