从UIWebview中读取Javascript对象

时间:2011-08-17 01:46:27

标签: javascript objective-c uiwebview

我有一个网页,其中包含javascript对象中的数据。我想从UIWebView访问这些数据,以便在原生ObjectiveC代码中使用。

我尝试了很多方法

  1. 在委托方法-(void) webViewDidFinishLoad:(UIWebView *) webView中 我尝试使用
  2. 访问该对象

    [myWebView stringByEvaluatingJavaScriptFromString:@""];

    但似乎没有一种简单的方法来提取结构化数据

    1. 我认为的其他选择是
    2. 只需将HTML作为字符串加载并解析它,但这似乎是一种非常丑陋的方法。

      我所拥有的HTML的一个例子是。

      <html>
          <head>
              <script type="text/javascript">
              $(function() {
                myData[0] = {
                      name: 'data title',
                      data: [
                      [1281880800000, 4],[1282485600000, 12],[1283090400000, 15],[1283695200000, 107],[1284300000000, 11],[1284904800000, 14],[1285509600000, 3],[1286110800000, 10],[1286715600000, 12],[1287320400000, 2],[1287925200000, 304],[1288530000000, 18],[1289134800000, 22],[1289739600000, 5],[1290344400000, 6],[1290949200000, 14],[1291554000000, 6],[1292158800000, 10],[1292763600000, 9],[1293368400000, 0],[1293973200000, 4],[1294578000000, 2],[1295182800000, 17],[1295787600000, 6],[1296392400000, 4],[1296997200000, 7],[1297602000000, 50],[1298206800000, 2],[1298811600000, 3],[1299416400000, 3],[1300021200000, 301],[1300626000000, 1],[1301230800000, 72],[1301839200000, 6],[1302444000000, 5],[1303048800000, 2],[1303653600000, 5],[1304258400000, 7],[1304863200000, 8],[1305468000000, 34],[1306072800000, 12],[1306677600000, 6],[1307282400000, 2],[1307887200000, 2],[1308492000000, 7],[1309096800000, 30],[1309701600000, 63],[1310306400000, 3],[1310911200000, 9],[1311516000000, 3],[1312120800000, 4]             ],
                      color: '#ff1430'
                  };
      
                  myData[1] = {
                      name: 'Other Data',
                      data: [
                      [1281880800000, 29],[1282485600000, 402],[1283090400000, 0],[1283695200000, 1],[1284300000000, 1],[1284904800000, 0],[1285509600000, 0],[1286110800000, 0],[1286715600000, 1],[1287320400000, 10],[1287925200000, 2],[1288530000000, 0],[1289134800000, 10],[1289739600000, 1],[1290344400000, 3],[1290949200000, 26],[1291554000000, 2],[1292158800000, 5],[1292763600000, 3],[1293368400000, 1],[1293973200000, 3],[1294578000000, 26],[1295182800000, 2],[1295787600000, 0],[1296392400000, 5],[1296997200000, 47],[1297602000000, 36],[1298206800000, 12],[1298811600000, 21],[1299416400000, 0],[1300021200000, 0],[1300626000000, 16],[1301230800000, 0],[1301839200000, 3],[1302444000000, 4],[1303048800000, 2],[1303653600000, 0],[1304258400000, 1],[1304863200000, 5],[1305468000000, 2],[1306072800000, 1],[1306677600000, 4],[1307282400000, 1],[1307887200000, 1],[1308492000000, 51],[1309096800000, 77],[1309701600000, 3],[1310306400000, 2],[1310911200000, 1],[1311516000000, 10],[1312120800000, 4]             ],
                      color: '#007396'
                  };
              </script>
      </head>
          <body>    
          </body>
      </html>
      

      编辑: 为了澄清我希望能够在目标C中的上述HTML示例中访问myData结构作为NSDictionary或类似的。

      NSInteger x = [[[[[myDataArray objectAtIndex:0] objectForKey:@"data"] objectAtIndex:0] objectAtIndex:0]
      

      我已经使用http://stig.github.com/json-framework将JSON转换为NSDictionary,但我想知道如何将它组合起来从HTML中访问这个javascript对象

1 个答案:

答案 0 :(得分:1)

我认为这是一个重复的帖子。但是让我澄清你的疑问 -

[webView stringByEvaluatingJavaScriptFromString:@"obj.func();"];

编辑:检查一下 - How to inject Javascript in UIWebView

希望这会有所帮助......