Javascript 从JSContext块创建UIWebView可防止在iOS8上加载资产
我正在尝试从JSContext块创建webview。但是,它会导致新的webview加载一个没有其资产(css/js)的网页,我认为这可能是由于块的JSContext和webview的context之间存在冲突 在块中的之后添加Javascript 从JSContext块创建UIWebView可防止在iOS8上加载资产,javascript,ios,uiwebview,javascriptcore,Javascript,Ios,Uiwebview,Javascriptcore,我正在尝试从JSContext块创建webview。但是,它会导致新的webview加载一个没有其资产(css/js)的网页,我认为这可能是由于块的JSContext和webview的context之间存在冲突 在块中的之后添加dispatch\u——这会延迟webview的初始化,可能会消除JS上下文——效果非常好 let block: @objc_block (NSString!) -> Void = { (string : NSString!) -> Void in
dispatch\u——这会延迟webview的初始化,可能会消除JS上下文——效果非常好
let block: @objc_block (NSString!) -> Void = {
(string : NSString!) -> Void in
// This will produce a webview with the CSS that is not loading.
// A solution is to dispatch_after the following code so it's executed outside of the JS callback.
self.webview = UIWebView()
self.webview.frame = self.view.frame
self.view.addSubview(self.webview)
self.webview.loadRequest(NSURLRequest(URL: NSURL(string: "https://google.com")!))
/*
// Working hack
dispatch_after(DISPATCH_TIME_NOW, dispatch_get_main_queue(), { () -> Void in
self.webview = UIWebView()
self.webview.frame = self.view.frame
self.view.addSubview(self.webview)
self.webview.loadRequest(NSURLRequest(URL: NSURL(string: "https://google.com")!))
})
*/
}
let context = JSContext()
context.setObject(unsafeBitCast(block, AnyObject.self), forKeyedSubscript: "test")
context.evaluateScript("test()")
此处的示例项目:
那里发生了什么事?
有没有一种方法可以让它在没有dispatch\u的情况下在hack之后工作