UIWebView中的Facebook评论框没有合适的高度

我正试图加载下面的一个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的scheme不是http或https。 我无法validation这一点,因为Safaridebugging器不显示“不安全的Javascript尝试”消息。

我用loadHTMLString加载UIWebView:baseURL:

我怎样才能让Facebook的评论框有适当的高度?

边注:

类似的问题: 无法在iOS UIWebView中加载完整的Facebook评论插件

在Facebook的all.js中徘徊我发现这个代码里面的评论function(如果你正在寻找'sdk.XFBML.Comments')设置高度

 getSize: function() { if (this._attr.mobile) return { width: '100%', height: 160 }; return { width: this._attr.width, height: 160 }; 

这里同样的问题。 解决scheme是不使用本地HTML文件(或HTMLstring)。 将HTMLfile upload到服务器并使用:

 NSURL *url = [NSURL URLWithString:@"http://www.blablblab.com/yourfile.html"]; [self.webview loadRequest:[NSURLRequest requestWithURL:url]]; 

代替:

 [self.webview loadHTMLString:localString baseURL:nil]; 

我还没有发现为什么当文件位于服务器上时,布局有所不同,但是当它是本地文件时,我的Facebook Comments View的高度总是降低到“height:160”。

你是正确的,问题是该计划不是HTTP或HTTPS。 该SDK不支持其他scheme,因此将无法初始化,并且setSize()将不会执行任何操作。 不幸的是,你需要find一些其他的解决方法来获得这个function。

我也遇到了这个问题,但由于内部要求,我们不得不从HTMLstring加载webview。 我们发现,如果您将“Facebook评论”视图的值更改为“自动”,则会按预期显示。

等待webview完全加载完成,然后运行:

 [self.webview stringByEvaluatingJavaScriptFromString: @"$(\".fb-comments span > iframe\").css(\"height\",\"auto\");"]; 

这为我们解决了这个问题。