2011-12-17 51 views
0

我有一个UIWebView,我试图注入一些HTML代码。我有一个我首先加载的模板文件,然后我想通过它的ID改变元素的内容。注入HTML到UIWebVeiw

这里是我的代码,在webViewDidFinishLoad:

NSString *injectDetails = [NSString stringWithFormat: 
         @"document.getElementById('details').innerHTML = \"%@\";", searchResult.details]; 
    [webView stringByEvaluatingJavaScriptFromString:injectDetails]; 

我已经逃避报价尝试过了,没有工作之一:

NSString *injectDetails = [NSString stringWithFormat: 
         @"document.getElementById('details').innerHTML = \"%@\";", [searchResult.details stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]]; 
    [webView stringByEvaluatingJavaScriptFromString:injectDetails]; 

我驾驶室注入纯文本,它作品。不起作用的html是一个很长的字符串,我最初使用[webView loadHTMLString:aDescription baseURL:NULL];加载的。

我需要做什么使这项工作与HTML?

回答

-1

请尝试以下代码行来实现此目的。

NSString *imagePath = [[NSBundle mainBundle] resourcePath]; 
imagePath = [imagePath stringByReplacingOccurrencesOfString:@"/" withString:@"//"]; 
imagePath = [imagePath stringByReplacingOccurrencesOfString:@" " withString:@"%20"]; 

NSString *HTMLData = @"Hello this is a test<img src="sample.jpg" alt="" width="100" height="100" />"; 

[webView loadHTMLString:HTMLData baseURL:[NSURL URLWithString: [NSString stringWithFormat:@"file:/%@//",imagePath]]]; 

第1行 这将获得主包根文件夹的路径。

2号线 我们需要斜线加倍削减在UIWebView的正常工作,所以我们正在寻找的“/”的所有实例,并以“//”

3号线 同样的协议取代它如上所述,但我们正在寻找一个空间,并用%等效的HTML代替它。012这是将一些示例数据放在一起用于UIWebView,您将看到我们已经将图像源设置为仅仅是我们的“sample.jpg”文件,因为它位于根文件夹中,如果它位于名为“images”的文件夹中,我们需要将源文件设置为图片// sample.jpg”。记住双重斜线!

第5行 虽然我们将baseURL设置为应用程序包的根目录,但它与本教程中的示例非常相似,这使我们可以引用相对而非绝对路径。

使用上面,你可以做到这一点..让,发生任何问题,我知道..

+0

如果你回答我的问题,我没有看到连接。 – Jim 2011-12-17 06:26:43

0

尝试添加样式文件的头时,我只是有同样的问题。所以我只是用\\“(在脚本中看起来像”\“)逃脱了所有双重配额。见下面的代码:

NSString *js = @" <style type=\\\"text/css\\\"> * { -webkit-touch-callout: none; -webkit-user-select: none; } </style> "; 
[_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.head.innerHTML = document.head.innerHTML+\"%@\"",js]];