gpt4 book ai didi

javascript - 保存 UIWebView ActiveElement 以备后用

转载 作者:行者123 更新时间:2023-11-30 17:58:59 28 4
gpt4 key购买 nike

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

NSString *javaScript = [NSString stringWithFormat:@"var textField = document.activeElement;"
"textField.value = '%@';" , barcode];
[webView stringByEvaluatingJavaScriptFromString:javaScript];

但是,当我使用相机扫描仪时,它必须加载一个新 View ,而 web View 会失去焦点。有没有办法保存事件元素 ID 以备后用,以便当您返回时我可以再次赋予该 View 焦点并可能自动提交?

编辑:

我已经完成了大部分工作,这就是我所做的。

self.activeElement = [webView stringByEvaluatingJavaScriptFromString:@"function getTextField(){ var textField = document.activeElement.id; return textField; } getTextField();"];

这会将文本字段 ID 保存到字符串变量中。然后当我的应用程序从相机 View 中出来时。

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]];

好像没有提交值。有任何想法吗?此外,我刚刚在谷歌网站上对此进行了测试......

最佳答案

当您返回到之前的 View 时,那实际上是一个具有默认值的新实例。

您需要将此值保存在某处并在初始化 View 时加载。

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

另一种解决方案类似于 this .

关于javascript - 保存 UIWebView ActiveElement 以备后用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17496284/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com