2012-01-04 76 views
2

我有一个像这样的html文件。iPhone在UIWebView中加载Htmlstring并使用Javascript替换文本

<body class="iphone" onLoad="doSomething()"> 
    <div id="title_wrapper"><h2 id="title">[[[TITOLO]]]</h2></div> 
    <h2 id="subtitle">[[[DATA]]]</h2> 
    <div id="content"> 
     [[[TESTO]]] 
    </div> 

我把它加载到我的UIWebView,我想,以取代“[[[TESTO]]]”与一个的NSString变量的内容。 我该怎么办?

回答

6

为什么你必须在JavaScript中做到这一点?

要做到这一点在Objective-C,只是去:

NSString *templateHTML = [NSString stringWithContentsOfFile:@"Filename" encoding:NSUTF8Encoding error:NULL]; 
NSString *finalHTML = [templateHTML stringByReplacingOccurrencesOfString:@"[[TEST0]]" withString:variable]; 

这将让你与你的变量,而不是HTML [TEST0],然后你就可以使用loadHTMLString:baseURL:加载到一个UIWebView。

+0

太好了!今晚我会尝试,如果我毫不怀疑,我会尽可能标记您的解决方案。非常感谢! – 2012-01-04 15:48:03

+0

非常感谢你!它很棒! – 2012-01-04 22:56:19

+0

如果我想调用方法doSomething()我该怎么办? – 2012-01-04 23:20:13

1

我不喜欢的东西之前,但我做到了客观C.

只是先建立HTML文件

[NSString stringWithFormat:@"<body class="iphone" onLoad="doSomething()"><div id="title_wrapper"><h2 id="title">%@</h2></div><h2 id="subtitle">%@</h2><div id="content">%@</div>", titolo ,data, content]; 

,之后将其加载到web视图这样

[webView loadHTMLString:myHtml]; 
7

您可以使用UIWebView-stringByEvaluatingJavaScriptFromString:方法来修改您的HTML一旦被加载:

NSString *title = @"New Title"; 
[webView stringByEvaluatingJavaScriptFromString: 
    [NSString stringWithFormat:@"document.getElementById('title').innerHTML = %@", title]]; 
+0

我试过这个解决方案,但是文本并没有在HTML内容中被替换。可能是这个问题或原因? – YuDroid 2015-12-15 09:23:25

+0

确保占位符周围有单引号,例如... innerHTML ='%@' – egarc 2016-02-24 23:42:34