在UITableViewController中,我有一个带有stringByEvaluatingJavaScriptFromString的UIWebView,第一次正确加载。然后,视图控制器会在用户“关闭”时显示,然后可以再次请求。
- (void)viewDidLoad {
textComments.delegate=self;
NSString *path =[[[NSBundle mainBundle] bundlePath]
stringByAppendingString:@"/demo.html"];
[textComments loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]]];
}
-(void)webViewDidFinishLoad:(UIWebView *)_textComments{
NSString * html_string = [NSString stringWithFormat:@"document.getElementById('editor1').innerHTML='%@';"
, self.commentHTML];
[_textComments stringByEvaluatingJavaScriptFromString:html_string];
[_textComments stringByEvaluatingJavaScriptFromString:@"document.getElementById('editor1').focus();"];
}
demo.html是一个带有textarea的HTML文件:
<textarea cols="80" id="editor1" name="editor1" rows="8">Content goes
here. ERROR: innerHTML not replaced!</textarea>
我们的想法是将&lt; textarea&gt; 值替换为变量 self.commentHTML 的内容。
第一次加载表视图控制器时,可以正常使用 self.commentHTML 变量替换&lt; textarea&gt; 的值。
在用户CLOSE操作后,另一个 stringByEvaluatingJavaScriptFromString 碰巧获取innerHTML值并且它也能正常工作,然后我确保我关闭了UIWebView插座:
[textComments stopLoading];
[textComments removeFromSuperview];
textComments.delegate=nil;
self.textComments=nil;
到目前为止,这么好。 问题是,当用户再次启动View Controller时, UIWebView 会加载预先加载的 demo.html 内容,但JavaScript stringByEvaluatingJavaScriptFromString webViewDidFinishLoad没有发生。我已经确定正在触发 webViewDidFinishLoad 。我还确保 didFailLoadWithError 也没有被解雇。
有关为什么第二次触发View Controller的想法,还没有发生stringByEvaluatingJavaScriptFromString?
我想知道我是否必须销毁/解除/释放我在CLOSE时未设想的其他内容。
非常感谢您的帮助。
编辑以包含完整的demo.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEditor</title>
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
<script type="text/javascript" src="ckeditor.js"></script>
</head>
<body><p><textarea cols="80" id="editor1" name="editor1" rows="8">Content goes here. ERROR: innerHTML not replaced!</textarea></p>
</body>
</html>
答案 0 :(得分:0)
这里没有足够的代码可以肯定,但我的第一个猜测是这个序列创建了你的dom的两个独立元素<textarea id="editor1">
并且javascript确实执行,但是将内容放入错误的textarea