在 UIWebView 上定义事件
Posted
技术标签:
【中文标题】在 UIWebView 上定义事件【英文标题】:Defining event on UIWebView 【发布时间】:2013-02-19 19:06:26 【问题描述】:请原谅我对 ios 开发相当陌生(那将是非常新的)。
我刚刚实现了原生 Facebook 授权,现在我想将我的 access_token 传递给 UIWebView 中的本地 html 文件。为此,我在 html 文件中创建了一个 javascript 对象,并带有一个接收 access_token 作为参数的 init 函数。现在我只需要从外部调用该函数。一些研究让我找到了[UIWebView stringByEvaluatingJavaScriptFromString:(NSString *)]
- 但在页面加载之前不应调用它。
在我的ViewController.m
中,我定义了一个- (void)updateView
,在其中我对webView
发出请求,这是一个UIWebView
。我现在想在这个特定请求完成后立即执行一个 JavaScript 字符串。我该怎么做?
- (void)updateView
AppDelegate *appDelegate = [[UIApplication sharedApplication]delegate];
if (appDelegate.session.isOpen)
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://mydomainwuhuu/mobile?o=Auth&accessToken=%@", appDelegate.session.accessToken]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
[webView stringByEvaluatingJavaScriptFromString:@"window.alert('test')"];
这段代码没有这样做,我认为是因为我在页面加载完成之前调用了 JavaScript?我该如何解决?
【问题讨论】:
【参考方案1】:UIWebView 有委托方法见this。针对您的情况,请使用– webViewDidFinishLoad:
。
【讨论】:
怎么样?现在我有类似的东西:- (void)webViewDidFinishLoad:(UIWebView *)thisWebView [thisWebView stringByEvaluatingJavaScriptFromString:@"wuff.init()"];
但它不执行该功能..
在那个函数里面加一个alert,能不能贴一下JS函数代码
我在 wuff.init() 函数中包含了一个 window.alert("test") 。问题不在于 JavaScript。如果我在 Web 浏览器中打开 html 文件并执行 wuff.init(),则会显示弹出窗口..
见this。尝试用JS实现。
这不是一个选项,因为我需要从 AppDelegate 传递的变量。请参阅我在先前评论中发布在 Pastebin 上的代码 :)【参考方案2】:
我以前也遇到过同样的问题。我最终只包含了一个“完成”按钮,并在 IBAction 按钮调用中包含了 stringbyevalatingjavascript 函数。
当时就成功了。
【讨论】:
我对此不感兴趣。它必须在加载时自动发生。以上是关于在 UIWebView 上定义事件的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Swift 3 中的 UIWebview 中的链接打开另一个视图?