假设我有一个像这样的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>
带有UIWebView的Objective-C中的。到目前为止我所做的是提出这个:
-(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实际上是正确的(至少对我来说)我认为将outerHTML与newCode分配的行应该相应地替换整个HTML。为了验证,我将其登录到控制台。是啊......一切都没有改变。
谁能告诉我这里我做错了什么?我不能真正使用jQuery或任何其他框架,因为代码应该从第三方获取其HTML表单,并且他们不必使用jQuery或类似的东西。
答案 0 :(得分:0)
你只是错过了新html周围的引号:
NSString* newCode = [NSString stringWithFormat:@"document.forms[0].%@.outerHTML=\"%@%@%@\";", self.identifier, code, innerhtml, endCode];
记住outerHTML期待一个字符串。
答案 1 :(得分:0)
很遗憾没有,但我找到了一个代理解决方案,可以在我获得之前动态修改HTML。也适用: - )