使用javascript从uiwebview的网页获取值

时间:2015-01-07 12:31:47

标签: javascript ios objective-c uiwebview

我正在使用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);

现在问题是:

我想要我的价值变量值,我怎么能得到它?

3 个答案:

答案 0 :(得分:1)

下载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,它必须在视图上。

这可能对您有所帮助:)。

答案 1 :(得分:1)

将代理添加到您的网络视图

_webView.delegate =self;

使用此代码

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

答案 2 :(得分:0)

You can use UIWebView's delegate method webView:shouldStartLoadWithRequest:navigationType: to intercept URL requests. Make a fake request when you need to return some data from JS function, intercept it, handle, and return NO.

Read here for details.