从iPhone中的webview中提取单个变量?

时间:2011-08-19 20:49:22

标签: iphone

我进入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")..........

这是目标,但显然不是这样。

3 个答案:

答案 0 :(得分:2)

使用stringByEvaluatingJavaScriptFromString:的{​​{1}}方法。

UIWebView

确保变量是全局变量并且已收到AJAX响应。您也可以使用上述方法和简单的Javascript来检查。

课程参考:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html

答案 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&param2=more'

这是一个包含更完整示例的页面,标题为“Javascript与Objective-C代码进行通信”:

http://www.codingventures.com/2008/12/using-uiwebview-to-render-svg-files/