通过stringByEvaluatingJavaScriptFromString将文本从文件传递到webview:

时间:2012-01-30 16:27:32

标签: cocoa webkit webview

我正在尝试将文件的内容传递给Webview。使用调试器我知道fileContents正确包含文件的内容,并且文件被正确读取。但是,我在webview中收到了一个JavaScript'EOF'错误。在将文本传递到webview之前,是否需要对文本进行转义或编码? fileContents中的换行符是否会破坏stringByEvaluatingJava ...?

//get file contents
NSStringEncoding *encoding;
NSError *error;
NSString *fileContents = [NSString stringWithContentsOfFile:path usedEncoding:encoding error:&error];

//trigger fileopen event and pass file contents into webview
NSString *event = @"fileopen";
NSString *extraJS = [NSString stringWithFormat:@"e.results='%@'",fileContents];
NSString *str = [NSString stringWithFormat:@"var e = document.createEvent('Events'); e.initEvent('%@', true, false); %@; document.dispatchEvent(e); ", event, extraJS];
[webView stringByEvaluatingJavaScriptFromString:str];

编辑(根据Hezi的回复):

NSString * result = [NSString stringWithFormat:@"e.result=decodeURIComponent('%@')",[results stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
[JSEventHelper triggerEvent:@"load" withExtraJS:result forWebView:self.webView];

上述工作看起来很奇怪,但确实如此!

1 个答案:

答案 0 :(得分:2)

尝试使用NSString的方法stringByAddingPercentEscapesUsingEncoding对字符串进行编码,然后再将其发送到javascript。