使用IOS的stringByEvaluatingJavavascriptFromString
重定向,整个程序就是我们的移动网站。
代码:
-(IBAction)sendToCart:(id)sender
{
self.action = @"cart";
self.addingToList = NO;
self.selectedIndex = 3;
if([self.barCodeArray count] > 0)
{
NSString *myUrl = @"http://mycompany'surl/barcodeAddTo.ep?action=cart&barcodes=";
NSMutableArray *newQuantityArray = [NSMutableArray arrayWithCapacity:self.arrayIndex];
for(NSInteger i = 0; i <= self.arrayIndex; i++)
{
if ([self.quantityArray objectAtIndex:i] != NULL)
{
[newQuantityArray addObject:[self.quantityArray objectAtIndex:i]];
}
}
NSDictionary *barCodeAndQuantityData = [NSDictionary dictionaryWithObjectsAndKeys: self.barCodeArray, @"barcodes", newQuantityArray, @"qty", nil];
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:barCodeAndQuantityData options:kNilOptions error:nil];
NSString *myDictionaryString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
myUrl = [myUrl stringByAppendingString:myDictionaryString];
NSString *newUrl = [myUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[self.webView stringByEvaluatingJavaScriptFromString:@"jq('body').append('<a id=\"submitToCart\"></a>\');"];
[self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"jq('#submitToCart').on('click', function(){window.location.href = %@});", newUrl ]];
[self.webView stringByEvaluatingJavaScriptFromString:@"jq('#submitToCart').trigger('click');"];
NSLog(@"Your encoded url looks like %@", newUrl);
/*
NSURL *url = [[NSURL alloc] initWithString:[myUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"Your url looks like %@", url);
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
//NSLog(@"Your request looks like %@", request);
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connection start];
*/
[self hideScanViewElementsShowWebView];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No Bar Codes Scanned" message:@"You haven't scanned any bar codes" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
alert = nil;
}
}
下面这三行代码是我需要实现的,能实现吗?
[self.webView stringByEvaluatingJavaScriptFromString:@"jq('body').append('<a id=\"submitToCart\"></a>\');"];
[self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"jq('#submitToCart').on('click', function(){window.location.href = %@});", newUrl ]];
[self.webView stringByEvaluatingJavaScriptFromString:@"jq('#submitToCart').trigger('click');"];
是的,这些代码应该可以工作。
首先,stringByEvaluatingJavaScriptFromString方法将在Web视图中执行给定的JavaScript字符串。
第一行的JavaScript将在Web视图中的body元素中添加一个名为“ submitToCart”的a元素。
第二行的JavaScript将为这个a元素添加一个click事件处理程序,当处理程序被触发时,它将将浏览器的当前URL设置为传递的URL。
第三行的JavaScript将触发“ submitToCart”a元素的click事件处理程序。
这些JavaScript代码最终将使浏览器加载传递的URL,从而将浏览器重定向到该URL。