我进入iOS的“全新”一周。我正在使用x-code创建基于视图的应用程序。现在使用Web视图我需要从网页上的隐藏标记中提取变量并将其发送到本机代码。那么我该怎么做:
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
**this varSendText**
varSendText = document.getElementById("sendtextcoupon").value;
if (varSendText == "1")..........
这是目标,但显然不是这样。
答案 0 :(得分:2)
使用stringByEvaluatingJavaScriptFromString:
的{{1}}方法。
UIWebView
确保变量是全局变量并且已收到AJAX响应。您也可以使用上述方法和简单的Javascript来检查。
答案 1 :(得分:0)
不确定这是否是您需要的,但您可以使用
在Web视图上执行任意javascript[webView stringByEvaluatingJavaScriptFromString:script]
如果script
符合以下内容:
@"return varSendData;"
在正常情况下会这样做。我不确定xmlhttprequest回调如何使它与众不同。我不喜欢我的ajax。我假设你必须找到一些方法等到通话成功。
编辑:有人显然打败了我。你去吧我们都提出了同样的建议!
答案 2 :(得分:0)
如果您想将UIWebView的 OUT 调用到应用程序中(我认为这就是你想要的,vs INTO 你的UIWebView这是另一个当前的答案正在解决),你必须从你的内容开始加载页面,使用javascript或一些用户交互,如跟随的超链接。您的应用可以取消页面加载,以便页面实际上不会离开。您可以将数据作为参数传递到页面加载请求URL。您无法获得任何“返回值”,但您可以使用其他人建议的内容(调用stringByEvaluatingJavaScriptFromString:
)根据您为pageLoad请求执行的操作的结果将数据传回。
您的UIWebViewDelegate方法拦截了页面加载请求:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
启动页面加载请求的javascript可以是这样的:
document.location = 'command://dosomething?param1=something¶m2=more'
这是一个包含更完整示例的页面,标题为“Javascript与Objective-C代码进行通信”:
http://www.codingventures.com/2008/12/using-uiwebview-to-render-svg-files/