我有一个WebView,我想从JavaScript调用Objective-C中的一个视图.有人知道我怎么做吗?
我的ViewController中有这个代码:
- (BOOL)webView:(UIWebView *)webView2
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType {
NSString *requestString = [[request URL] absoluteString];
NSArray *components = [requestString componentsSeparatedByString:@":"];
if ([components count] > 1 &&
[(NSString *)[components objectAtIndex:0] isEqualToString:@"myapp"]) {
if([(NSString *)[components objectAtIndex:1] isEqualToString:@"myfunction"])
{
NSLog([components objectAtIndex:2]); [[Airship shared] displayStoreFront]; //<- This is the code to open the Store
NSLog([components objectAtIndex:3]); // param2
// Call your method in Objective-C method using the above...
}
return NO;
}
return YES; // Return YES to make sure regular navigation works as …Run Code Online (Sandbox Code Playgroud) 我有一个简单的iOS本机应用程序,可以加载单个UIWebView.如果应用程序没有完全在20秒内完成在webView中加载初始页面,我希望webView显示错误消息.
我在这里加载了我的webView viewDidLoad(简化):
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.example.com"] cachePolicy:NSURLCacheStorageAllowed timeoutInterval:20.0]];
Run Code Online (Sandbox Code Playgroud)
该timeoutInterval代码在上述范围内实际上并没有"做"什么,因为苹果有它在操作系统中设置为不实际超时240秒.
我设置了自己的webView didFailLoadWithError操作,但如果用户有网络连接,则永远不会调用它.webView继续尝试使用我的networkActivityIndicator旋转加载.
有没有办法为webView设置超时?
现在,我已经有了它,它的工作原理:
var myWebWorker = new Worker('myWebWorker.js');
myWebWorker.onmessage = function (myEvent) {
$('#Print').append('Return value: ' + myEvent.data + "<br>");
};
myWebWorker.postMessage(2);
Run Code Online (Sandbox Code Playgroud)
我的问题是:我可以这样做吗?
var result = myWebWorker.postMessage(2);
Run Code Online (Sandbox Code Playgroud)
因为我需要web worker同步 - 换句话说,给出一个返回值,直到你完成后才返回.
编辑1:
Web worker正在使用openDatabaseSync事务对本地数据库进行插入/选择.
编辑2:
我的问题似乎是Cocoa Touch,而不是JavaScript. 这是一个有人在StackOverflow上发布的聪明黑客.
编辑3:
这是一个更好的黑客.
uiwebview ×2
cocoa-touch ×1
ios5 ×1
iphone ×1
javascript ×1
loading ×1
timeout ×1
web-worker ×1
xcode ×1