从UIWebview读取一个Javascript对象

Reading a Javascript object from UIWebview

本文关键字:一个 Javascript 对象 UIWebview 读取      更新时间:2023-09-26

我有一个网页,其中有一个javascript对象内的数据。我想从UIWebView访问这些数据,以便在本机objective - c代码中使用。

我已经尝试了很多方法

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

[myWebView stringByEvaluatingJavaScriptFromString:@""];

,但似乎没有一个简单的方法来拉入结构化数据

  1. 另一个选项是

只是将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对象

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

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

EDIT: Check this - 如何在UIWebView中注入Javascript