Javascript 保存UIWebView ActiveElement供以后使用

Javascript 保存UIWebView ActiveElement供以后使用,javascript,iphone,uiwebview,Javascript,Iphone,Uiwebview,我希望用户能够从我的iphone应用程序中将条形码扫描到网络表单中。我已经通过这种方式用javascript实现了类似的功能 NSString *javaScript = [NSString stringWithFormat:@"var textField = document.activeElement;" "textField.value = '%@';" , barcode]; [webView stringByEvaluat

我希望用户能够从我的iphone应用程序中将条形码扫描到网络表单中。我已经通过这种方式用javascript实现了类似的功能

NSString *javaScript = [NSString stringWithFormat:@"var textField = document.activeElement;"
                            "textField.value = '%@';" , barcode];
    [webView stringByEvaluatingJavaScriptFromString:javaScript];
但是,当我使用相机扫描仪时,它必须加载一个新视图,而webview会失去焦点。有没有办法保存活动元素ID以备以后使用,这样当您返回时,我可以再次提供该视图焦点并可能自动提交

编辑:

我大部分时间都在工作,以下是我所做的

self.activeElement = [webView stringByEvaluatingJavaScriptFromString:@"function getTextField(){ var textField = document.activeElement.id; return textField; } getTextField();"];
将textfield id保存到字符串变量。然后当我的应用程序出现在相机视图中时

NSString *javaScript = [NSString stringWithFormat:@"var textField = document.getElementById('%@'); textField.value = '%@';" , self.activeElement, barcodeValueFromCamera];

[webView stringByEvaluatingJavaScriptFromString:javaScript];
这就如预期的那样输入了值。。。但是如果我尝试这个

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementByID(%@).form.submit();", self.activeElement]];

它似乎没有提交值。有什么想法吗?另外,我刚刚在谷歌网站上测试了这个功能……

当您返回到上一个视图时,它实际上是一个带有默认值的新实例

您需要将此值保存在某个位置,并在初始化视图时加载

例如,可以使用程序的当前状态值(或初始默认值)创建一个单例。然后,当加载视图时,可以从该状态获取信息。这样,在离开视图之前,您可以在此单例中设置所需的值,并在需要时重新加载

另一个解决方案是这样的。

我想出来了

首先使用javascript函数保存activeElements ID。(self.activeElement只是一个NSString)

在我的情况下,我使用的是照相机条形码扫描仪。。。当我回到视图(webview已经失去焦点)时,我使用这段代码输入值并有选择地提交表单

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('%@').value = '%@';" , self.activeElement, inputString]];

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('%@').form.submit();", self.activeElement]];

我明白你的意思,但你误解了这个问题。我不是要保存字符串,而是JavaScript找到的文本字段。我打算推荐与您找到的解决方案相同的解决方案。我必须在C++/Qt上做类似的事情。不幸的是,我没有足够的分数来支持你的答案。
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('%@').value = '%@';" , self.activeElement, inputString]];

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('%@').form.submit();", self.activeElement]];