【问题标题】:get Values from uiwebview's webpage using javascript使用 javascript 从 uiwebview 的网页获取值
【发布时间】:2015-03-05 08:31:26
【问题描述】:

我在 Objective-C 中使用 java 脚本。

以下是我的代码:

NSString *javascript = @"testfunction = function(){ jQuery.getScript(\"https://www.myserver.com/myscript.js\").done(function(script,textStatus){$testvalue = 10; return $testvalue; }).fail(function(jqXHR,settings,exception){\n alert(exception);});}";

[webview stringByEvaluatingJavaScriptFromString:javascript];

NSString *value = [webview stringByEvaluatingJavaScriptFromString:@"testfunction();"];
NSLog(@"Value of Value : %@",value);

现在问题是:

我想要我的值变量中的值我怎样才能得到它?

【问题讨论】:

    标签: javascript ios objective-c uiwebview


    【解决方案1】:

    将委托添加到您的网络视图

    _webView.delegate =self;
    

    使用此代码

    NSString *fName = [[NSString alloc] initWithFormat: @"demo()"];
    NSString *result = [webView stringByEvaluatingJavaScriptFromString:fName];
    

    【讨论】:

    • 感谢您的回复。但这是基本的思考我在做什么,但我仍然没有将该变量的值纳入我的目标 c 代码
    【解决方案2】:

    下载code example

    按照以下步骤操作:

    创建JS文件demo.js并添加代码

    var hello = function(str){
       return str;
    };
    

    添加 UIWebView => 将 JavaScript 嵌入到虚拟 html 文件中并将其加载到 UIWebView 中

    [self.webView loadHTMLString:@"<script src=\"demo.js\"></script>"
                  baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]]];
    

    这里是调用JS的代码

    NString *str=@"hi JavaScript";
    NSString *function = [[NSString alloc] initWithFormat: @"hello(%@)", str];
    NSString *result = [webView stringByEvaluatingJavaScriptFromString:function];
    

    现在,有一个重要的安全提示可以让它真正起作用:UIWebView 必须实际加载一个视图。它不一定是可见的,但为了让 WebKit 引擎执行 JS,它必须在视图上。

    这可能对你有帮助:)

    【讨论】:

    • 感谢您的快速回复,我已经做到了。但我希望将值从 javascript 转换为我的目标 c 变量,我该怎么做?
    【解决方案3】:

    您可以使用UIWebView 的委托方法webView:shouldStartLoadWithRequest:navigationType: 来拦截URL 请求。当你需要从 JS 函数返回一些数据时,发出一个假请求,拦截它,处理并返回NO

    阅读here了解详情。

    【讨论】:

      猜你喜欢
      • 2017-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-02
      • 2019-05-05
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      相关资源
      最近更新 更多