【问题标题】:Passing Javascript Variable to Objective-C将 Javascript 变量传递给 Objective-C
【发布时间】:2011-05-10 14:43:55
【问题描述】:

我在这里看到了如何将 Objective-C 变量传递给 JavaScript,passing objective c variable to javascript in ios,但是当我使用类似这样的东西时,如何将变量从 JavaScript 传递给 Objective-C:

[webView stringByEvaluatingJavaScriptFromString:@"var elems = document.body.getElementsByTagName(\"u\");" "passThisVarToObjC = elems.length;"

【问题讨论】:

    标签: javascript objective-c variables


    【解决方案1】:

    嗯,这就是我们所说的字符串类型

    因为stringByEvaluatingJavaScriptFromString: 的返回类型是NSString *,您要么需要坚持使用字符串,要么将值强制转换为其他(read:more usable)类型。

    但无论如何,stringByEvaluatingJavaScriptFromString: 将毫无问题地返回 JavaScript 变量的值。

    实现这一点的方法是使用匿名函数(在这种情况下是自执行的):

    NSString *numOfElements = [webView stringByEvaluatingJavaScriptFromString:@"(function() {var elems = document.body.getElementsByTagName(\"u\"); return elems.length;})();"];
    
    //do normal stuff with numOfElements like cast to an int or something cool like that.
    

    【讨论】:

    【解决方案2】:

    您的 javascript 中需要有一个 return 语句。可能有更好的方法可以做到这一点,但以下 javascript 对我有用:

        NSString* findLink = @"function f() {var x = document.getElementsByTagName('a');
    if(x.length > 0) { return x[0].getAttribute('href');}; return null;} f(); ";
    

    尝试使用此代码:

    [webView stringByEvaluatingJavaScriptFromString:@"function f() {var elems =
    document.body.getElementsByTagName(\"u\"); return elems.length;}f();"];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-26
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多