开始我有UTFS。
尝试在字符串中间插入一个变量来填充Web视图表单而不使用字符串,只需追加并使代码变大。我目前的代码是
NSString * html = [webView stringByEvaluatingJavaScriptFromString:@" document.DetailView.innerHTML;" @" document.getElementsByName(' user_name')[0] .value =' somuser';" @" document.getElementsByName(' user_password')[0] .value =' somevar';" @" document.DetailView.submit();" ]
我试过了
NSString * html = [webView stringByEvaluatingJavaScriptFromString:@" document.DetailView.innerHTML;" @" document.getElementsByName(' user_name')[0] .value ='%@&#39 ;;" @" document.getElementsByName(' user_password')[0] .value =' somevar';" @" document.DetailView.submit();" ,txtField.text];
但它给我一个构建错误(特别是它正在寻找"]")。我猜我将不得不使用stringbyappend慢慢构建字符串,但我希望有一点运气,有人会遇到这个或有一个解决方法。这在c#中看起来很简单。
答案 0 :(得分:1)
NSString的stringWithFormat
通常是正确的方法。
示例:
[NSString stringWithFormat:@"somejavascript.var = '%@'", otherString];
我在第一个和第二个例子中首先看到的错误是:...TML;" @"doc...
答案 1 :(得分:0)
您可以使用stringWithFormat:
将变量放入字符串中。在您的情况下,以下方法将起作用:
NSString *html = [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.DetailView.innerHTML; document.getElementsByName('user_name')[0].value = '%@'; document.getElementsByName('user_password')[0].value = 'somevar'; document.DetailView.submit();" , txtField.text]];
您的代码中还有一个错误,即您没有正确编码文本字段值 - 请考虑如果用户输入了撇号会发生什么。
然而,以这种方式构建JavaScript并不是一个好方法。考虑将JavaScript分解为外部JavaScript文件 - 这将使读取和写入更加容易。