我正在尝试在 UIWebView 中加载以下 html。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'myAppId',
status : true,
xfbml : true
});
FB.Event.subscribe("xfbml.render", function(response) {
FB.Canvas.setSize();
});
};
(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 = "http://connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="fb-comments" data-href="http://www.google.com/" data-num-posts="10"></div>
</body>
</html>
在浏览器中,它会正确显示注释框,并且 FB.Canvas.setSize() 会适当地调整高度(没有它,iframe 的跨度高度设置为 160)。
这个 setSize() 函数似乎在 UIWebView 内部什么都不做,可能是因为 url 的方案不是 http 或 https。我无法验证这一点,因为 Safari 调试器没有向我显示“不安全的 Javascript 尝试”消息。
我正在使用 loadHTMLString:baseURL 加载 UIWebView:
如何让 facebook 评论框具有适当的高度?
旁注:
类似问题:Unable to load full Facebook comment plugins inside an iOS UIWebView
在 facebook 的 all.js 中闲逛,我在评论函数中找到了这段代码(如果你正在寻找“sdk.XFBML.Comments”),它设置了高度
getSize: function() {
if (this._attr.mobile) return {
width: '100%',
height: 160
};
return {
width: this._attr.width,
height: 160
};