我正在使用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);
现在问题是:
我想要我的价值变量值,我怎么能得到它?
答案 0 :(得分:1)
按照以下步骤操作:
创建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.