UIWebView 未正确加载 JavaScript - 嵌入式 Facebook 帖子

Posted

技术标签:

【中文标题】UIWebView 未正确加载 JavaScript - 嵌入式 Facebook 帖子【英文标题】:UIWebView not loading JavaScript properly - Embedded Facebook post 【发布时间】:2015-10-03 10:36:41 【问题描述】:

Facebook 拥有这项新功能,允许用户将公开帖子嵌入网页。我想尝试在 UIWebView 内的 iPhone 应用程序中使用它。转义必要的代码非常简单,但即使我手动转义代码,网络视图也不会正确加载帖子。 javascript 根本不起作用。

class WebViewController: UIViewController


@IBOutlet weak var webView: UIWebView!


override func viewDidLoad() 
    loadFacebookPost()


func loadFacebookPost()
    //Code from Facebook as a string
    var myhtml: String = "<html><body><div id=\"fb-root\"></div><script>(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/sv_SE/sdk.js#xfbml=1&version=v2.3\";  fjs.parentNode.insertBefore(js, fjs);(document, 'script', 'facebook-jssdk'));</script><div class=\"fb-post\" data-href=\"https://www.facebook.com/BestofVines/posts/691077077726242\" data-width=\"350\"><div class=\"fb-xfbml-parse-ignore\"><blockquote cite=\"https://www.facebook.com/BestofVines/posts/691077077726242\"><p>Steven Tyler made this girl&#039;s day!</p>Posted by <a href=\"https://www.facebook.com/BestofVines\">Best Vines</a> on&nbsp;<a href=\"https://www.facebook.com/BestofVines/posts/691077077726242\">den 2 oktober 2015</a></blockquote></div></div></body></html>"
    webView.loadHTMLString(myHTML, baseURL: nil)


这是我尝试嵌入的帖子

这就是它的显示方式

我已将myHTML 中的所有引号替换为\"。我错过了什么?

编辑

我也尝试过this 解决方案。这次视图是空白的,没有显示任何内容。代码:

import Foundation
import UIKit
import WebKit

class WebViewController: UIViewController

@IBOutlet var uiview: UIView!
var webView: WKWebView?

override func loadView() 
    super.loadView()
    self.webView = WKWebView()
    self.uiview = self.webView!


override func viewDidLoad() 
    super.viewDidLoad()
    loadFacebookPost()


func loadFacebookPost()
    var path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! NSString
    path = path.stringByAppendingString("/myHTML.html")
    var textHTML: String = "<html><body><div id=\"fb-root\"></div><script>(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/sv_SE/sdk.js#xfbml=1&version=v2.3\";  fjs.parentNode.insertBefore(js, fjs);(document, 'script', 'facebook-jssdk'));</script><div class=\"fb-post\" data-href=\"https://www.facebook.com/BestofVines/posts/691077077726242\" data-width=\"350\"><div class=\"fb-xfbml-parse-ignore\"><blockquote cite=\"https://www.facebook.com/BestofVines/posts/691077077726242\"><p>Steven Tyler made this girl&#039;s day!</p>Posted by <a href=\"https://www.facebook.com/BestofVines\">Best Vines</a> on&nbsp;<a href=\"https://www.facebook.com/BestofVines/posts/691077077726242\">den 2 oktober 2015</a></blockquote></div></div></body></html>"
    var ok: Bool = textHTML.writeToFile(path as String, atomically: true, encoding: NSUTF8StringEncoding, error: NSErrorPointer())
    if ok 
        println("Write done!")
        var url: NSURL = NSURL.fileURLWithPath(path as String, isDirectory: false)!
        webView!.loadRequest(NSURLRequest(URL: url))
    
    else 
        println("Error!")
    
  

【问题讨论】:

我建议您检查文件系统中的“myHTML.html”文件。尝试使用 OSX 中的浏览器打开它。 我尝试通过在“//connect.facebook.net/sv_SE/sdk.js#xfbml=1&version=v2. 3" 在 js.src 中。这似乎也不起作用,即使它适用于 Twitter 嵌入。 【参考方案1】:

我通过使用 GCDWerbServer 解决了这个问题: https://github.com/swisspol/GCDWebServer

所以,我使用服务器加载本地 css 文件、js 和图像,这使您能够为 web 视图基本 url 设置 http 链接。完成此操作后,Facebook 的帖子、视频开始出现,就像在普通浏览器中一样。

【讨论】:

你能分享你的代码吗?我也在尝试创建嵌入帖子。谢谢

以上是关于UIWebView 未正确加载 JavaScript - 嵌入式 Facebook 帖子的主要内容,如果未能解决你的问题,请参考以下文章

如何判断 UIWebView 何时完成渲染(未加载)?

加载后快速获取 UIWebView 的正确大小

PDF uiwebview 加载时未显示活动指示器

UIWebView 在 webview 完成加载时高度不正确

Syncfusion 控件未在 iOS 本机 UIWebView 上加载

UIWebview 没有加载正确的本地化版本的网站