Objective C运行Javascript到AutoFill Webpages。需要帮助

时间:2012-03-15 04:16:04

标签: javascript objective-c xcode uiwebview document

我一直在强调这个问题几个小时,我无法让它发挥作用。我没有javascript的经验,一直在论坛和其他网站上搜索,但我似乎无法找到一个有效的解决方案。

我正在尝试使用xCode中的webView填写表单

网站http://www.eatwellguide.org/mobile/是表单所在的位置。

该网站有这个论坛

             <form name="data[Search][form]" METHOD="post" ACTION="/search/advanced/find" ID="frmAS" >
                 <ul>
                   <li><input type="hidden" name="device" id="device" value="mobile" title="mobile">
                      <input type="hidden" name="iframe" id="iframe" value="11" title="mobile" > Keyword: </li>
                   <li><input type="text" name="data[Search][keyword]" id="SearchKeyword" title="search by keywords" /> 
                      <input ID="SearchSubmit" class="BTNsend"  type="submit" value="Find" name="data[Search][submit]"/></li>
                   <li>Zip / Postal  Code:</li>
                   <li><input type="text" title="Zip search" value="" name="data[Search][zip_code]"  />   <input ID="SearchSubmit" class="BTNsend" type="submit" value="Find" name="data[Search][submit]"/> </li>
                   <li><select name="data[Search][distance]" style="font-size:120%; ">
                         <option value="1">1</option>
                         <option value="5"  selected="">5</option>
                         <option value="10">10</option>
                         <optionvalue="20">20</option>
                         <option value="50">50</option>
                         <option value="100">100</option>
                         <option value="200">200</option>
                        </select> <input type="radio" ID="SearchDistanceUnit" value="Mi" checked="" name="data[Search][distance_unit]" class="BTNradio"/> Mi

我正在尝试修改我拥有title =“zip search”的文本框并提交表单,但我的代码根本不起作用。它甚至不会填写文本框

    NSString* javaScriptString = @"document.getElementById('data[Search][zip_code]').elements.value='22911';";



[self.webView stringByEvaluatingJavaScriptFromString: javaScriptString];

它什么也没做。我也尝试过GetElementsByName以及其他两种变体。

1 个答案:

答案 0 :(得分:0)

浏览器支持将JavaScript直接输入到URL栏中。因此,如果您加载链接到的页面,请输入以下URL:

javascript:alert(document.getElementsByName('data[Search][zip_code]'))

您会收到一条警告消息,显示找到的内容。在那种情况下,我已经拿走了你的getElementByName并更正了它 - 元素应该是复数并返回一个数组。

建立:

javascript:alert(document.getElementsByName('data[Search][zip_code]')[0])

评估以显示输入元素。然后:

javascript:alert(document.getElementsByName('data[Search][zip_code]')[0].value)

显示当前值,并且:

javascript:document.getElementsByName('data[Search][zip_code]')[0].value = '22911'

填充框。这就是你想要的字符串(减去javascript:)。

如果您的语法错误,至少在Mobile Safari中,您的语句将被忽略。如果您最终尝试获取不存在的内容,则会在警报中收到NULL消息。