stringByEvaluatingJavaScriptFromString返回空字符串,但在safari中返回一个完整的字符串

时间:2014-07-02 19:01:14

标签: javascript ios uiwebview safari

我正在使用js函数调用stringByEvaluatingJavaScriptFromString调用[self.webview stringByEvaluatingJavaScriptFromString:@"someMethod()"

在iphone上它返回一个字符串但是当我使用"Develop -> myphone -> index.html"在safari中调试时,同一个调用会按预期返回正确的结果。

我还应该指出,使用该方法的JS文件与整个“网站”一样位于设备本地

我该怎么检查?

1 个答案:

答案 0 :(得分:0)

首先,您需要确保webView已正确加载,因此在通知您已使用UIWebViewDelegate方法完成后,请执行任何代码。然后,您必须确保您在该JS方法的正确URL处工作(您可以被重定向到移动站点(在URL中查找.m))。如果你是,可能没有帮助,所以你必须在移动网站上测试你在iPhone上使用的任何JS,在你的计算机上打开相同的URL并环顾四周。运行此测试:

#import "MyWebViewController.h"

@interface MyWebViewController() <UIWebViewDelegate>

// If you have a storyboard
@property (nonatomic, weak) IBOutlet UIWebView *webView;
// If you don't have a storyboard
// @property (nonatomic, strong) UIWebView *webView;

@end

@implementation MyWebViewController

- (void)viewDidLoad
{
//    If you don't have a storyboard
//    self.webView = [[UIWebView alloc] initWithFrame:self.view.frame];
//    [self.view addSubview:self.webView];
    self.webView.delegate = self;
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSLog(@"The URL of the site we are on is: %@", webView.request.URL.absoluteString);
    NSLog(@"Now, I'll evaluate the JS: %@", [webView stringByEvaluatingJavaScriptFromString:@"someMethod()"]);
}

@end