2012-01-04 78 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

相關問題