2012-02-14 151 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期待一个字符串。