繁体   English   中英

在没有可见的uiwebview的情况下调用javascript Objective-C

[英]calling javascript objective-c without visible uiwebview

我想从我的Objective-c调用javascript函数。 这对于iPhone。 我了解此行如何完成对javascript函数的调用

NSString *returnValue = [webView stringByEvaluatingJavascriptFromString:method];

但我实际上并不希望将Webview视为UI或将其用作UI的一部分。 因此,我可以以某种方式在调用上述方法之前直接创建它的实例。

我努力了:

UIWebView *webView = [[UIWebView alloc]initWithFrame:CGRectZero];
[webView loadRequest:[NSUrLRequest requestWithUrl:url]];

但似乎什么也没发生。 因此,有没有一种我想要使用的类似于上述方法。

在控制器的视图中添加webview以便运行javascript。 它的高度和宽度为零,因此不可见。

您的问题与UIWebView的大小无关。 这仅仅是一个时间问题。 以下代码可对零矩形UIWebView实例UIWebView 注意,使用UIWebViewDelegate方法webViewDidFinishLoad: UIWebView速度很慢,视图需要花费一些时间来加载其内容并准备接受JavaScript命令。

@interface NGViewController () <UIWebViewDelegate>
@property (nonatomic, strong) UIWebView *hiddenWebView;
@end

@implementation NGViewController

@synthesize hiddenWebView = _hiddenWebView;

- (void)viewWillLayoutSubviews
{
  [super viewWillLayoutSubviews];

  if (!self.hiddenWebView.superview)
  {
    [self.view addSubview:self.hiddenWebView];
  }
}

- (UIWebView *)hiddenWebView
{
  if (!_hiddenWebView) {
    _hiddenWebView = [UIWebView.alloc initWithFrame:CGRectZero];
    _hiddenWebView.delegate = self;
    [_hiddenWebView loadHTMLString:@"<html><head><script>window.james = 'My name';</script></head><body><h1>Hidden Web View by James</h1></body></html>" baseURL:nil];
  }
  return _hiddenWebView;
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
  NSString *documentBodyString = [self.hiddenWebView stringByEvaluatingJavaScriptFromString:@"window.james;"];
  NSLog(@"The body's inner HTML is: %@", documentBodyString);
}

@end

输出为:

2013-07-09 03:13:29.347 WebViewTest[14261:c07] The body's inner HTML is: My name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM