2012-02-14 192 views
-1

的UIWebView stringByEvaluatingJavaScriptFromString包裝標籤比方說,我有一個這樣的HTML:與其他標籤

<html> 
<form> 
<input type="button" id="Signature8" pdfFieldName="Signature8" onclick="document.location='pdz://signatureTapped?name=Signature8'" /> 
</form> 
</html> 

,我想以編程

<html> 
<form> 
<img src="Signature8.png"> 
<input type="button" id="Signature8" pdfFieldName="Signature8" onclick="document.location='pdz://signatureTapped?name=Signature8'" /> 
</img> 
</form> 
</html> 

在Objective-C有一個UIWebView替換它。我做了什麼,到目前爲止,已經來到了這一點:

-(void) injectCode:(NSString*) code intoWebView:(UIWebView*) webView withEndCode:(NSString*) endCode { 
    NSString* innerhtml = [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.forms[0].%@.outerHTML", self.identifier]]; 
    NSString* newCode = [NSString stringWithFormat:@"document.forms[0].%@.outerHTML=%@%@%@", self.identifier, code, innerhtml, endCode]; 
    [webView stringByEvaluatingJavaScriptFromString:newCode]; 
    NSLog(@"%@", [webView stringByEvaluatingJavaScriptFromString:@"document.body.outerHTML"]); 
} 

應該這樣調用:

[f injectCode:[NSString stringWithFormat:@"<img src=\"%@.png\" id=\"%@\">", f.identifier, f.identifier] intoWebView:self.webView withEndCode:@"</img>"]; 

(而F是包含名稱,標識,那等對象Signature8字段)。 問題是:這不起作用。當我通過它進行調試時,我可以看到innerhtml被填充,我可以看到newCode實際上是正確的(至少對我來說)是正確的,我認爲用newCode分配outerHTML的行以及所有應該替換整個HTML的行。爲了驗證,我將其登錄到控制檯。是的,沒有任何改變。

任何人都可以告訴我我在做什麼錯嗎?我真的不能使用jQuery或任何其他框架,因爲代碼應該從第三方獲取它的HTML表單,而且他們不必使用jQuery或類似的東西。

回答

0

不幸的是,但我發現了一個代理解決方案,可以在獲取之前即時修改HTML。也適用:-)

0

你只是缺少圍繞新的HTML報價:

NSString* newCode = [NSString stringWithFormat:@"document.forms[0].%@.outerHTML=\"%@%@%@\";", self.identifier, code, innerhtml, endCode]; 

記住outerHTML期待一個字符串。