0

我正在使用 .js 文件来验证应用程序中的 .html 文件,在我的项目中添加了 .js&.html 文件,但 .js 文件未存储在包内容中,仅包含 .html 文件,我使用的是 ios 模拟器 5.0 ,

我的验证来源是..

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    NSString *urlAddress        = [[NSBundle mainBundle] pathForResource:@"index" 
                                                                  ofType:@"html"]; //you can also use PDF files
    NSLog(@"%@",urlAddress);
    NSURL *url                  = [NSURL fileURLWithPath:urlAddress];
    NSURLRequest *requestObj    = [NSURLRequest requestWithURL:url];
    [web loadRequest:requestObj];
    web.backgroundColor=[UIColor redColor];
}

- (IBAction)markHighlightedString:(id)sender {

    // The JS File   
    NSString *filePath  = [[NSBundle mainBundle] pathForResource:@"HighlightedString" ofType:@"js" inDirectory:@""];
    NSData *fileData    = [NSData dataWithContentsOfFile:filePath];
    NSString *jsString  = [[NSMutableString alloc] initWithData:fileData encoding:NSUTF8StringEncoding];
    [web stringByEvaluatingJavaScriptFromString:jsString];

    // The JS Function
    NSString *startSearch   = [NSString stringWithFormat:@"stylizeHighlightedString()"];
    [web stringByEvaluatingJavaScriptFromString:startSearch];

}

- (IBAction)getHighlightedString:(id)sender {


    // The JS File   
    NSString *filePath  = [[NSBundle mainBundle] pathForResource:@"HighlightedString" ofType:@"js" inDirectory:@""];
    NSData *fileData    = [NSData dataWithContentsOfFile:filePath];
    NSString *jsString  = [[NSMutableString alloc] initWithData:fileData encoding:NSUTF8StringEncoding];
    [web stringByEvaluatingJavaScriptFromString:jsString];

    // The JS Function
    NSString *startSearch   = [NSString stringWithFormat:@"getHighlightedString()"];
    [web stringByEvaluatingJavaScriptFromString:startSearch];

    NSString *selectedText   = [NSString stringWithFormat:@"selectedText"];
    NSString * highlightedString = [web stringByEvaluatingJavaScriptFromString:selectedText];

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Highlighted String" 
                                                    message:highlightedString
                                                   delegate:nil 
                                          cancelButtonTitle:@"Oh Yeah" 
                                          otherButtonTitles:nil];
    [alert show];
    //[alert release]; // not required anymore because of ARC
}
- (IBAction)removeAllHighlights
{
    // calls the javascript function to remove html highlights
    [web stringByEvaluatingJavaScriptFromString:@"uiWebview_RemoveAllHighlights()"];
}

我在 NSLog(@"%@",filePath);//HighlightedString.js 中得到空值

4

2 回答 2

0

我不完全确定,但可能是您没有将该文件复制到目标的输出中吗?或者,您正在使用正在运行的应用程序的过时版本?一个简单的解决方法可能是先进行清理,然后进行构建并运行。此外,该文件可能未设置为进入目标。您可以通过转到 Target > Build Phases > Copy Bundle Resources 来更改它。这将打开一个区域,您可以在其中添加该文件。

之后,我通常会先进行清理,然后再进行构建,以确保获得应用程序的新版本。

添加

此外,您可以尝试设置inDirectory:您要设置的方法部分,filePathnil不是指定一个空字符串。或者,你可以完全摆脱它[[NSBundle mainBundle] pathForResource:@"HighlightedString" ofType:@"js"]

于 2012-10-12T06:04:40.297 回答
0

你可以试试这两个选项

1-单击项目导航器中的 js 文件,然后在需要选中的属性中选中复选框以将其包含在构建中。这张图片是我在检查第一步和第四步之前制作的。

在此处输入图像描述

2-只需将JavaScript写入HTML文件并将其放入函数中并调用此函数并停止将其作为文本加载。所以 stringByEval.... 只会使用 JavaScript 函数。

于 2012-10-12T06:19:13.507 回答