javascript - UIWebView 和 JavaScript

标签 javascript iphone objective-c cocoa-touch uiwebview

我发现 UIWebView 的行为很奇怪。

在委托(delegate)中

- (void)webViewDidFinishLoad:(UIWebView *)webView{    
    [self changeFont];    
    //[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(changeFont) userInfo:nil repeats:NO];
}

在changeFont中,我调用javaScript来更改网页的字体。它不会被应用,但如果我在委托(delegate) webViewDidFinishLoad 延迟几秒后调用更改字体方法,那么它将被应用。 如果文件很大,如果我们必须从委托(delegate) webViewDidFinish 触发计时器来应用文件的字体大小和样式,我们如何确定 webview 加载需要多长时间。

对此的任何解释。我搜索了很多,但文档中没有提到任何内容。

有什么帮助为什么 UIWebView 会出现这种行为吗?

最佳答案

Apple 的文档解释说,当完成/开始加载 frame 时,将调用 webViewDidFinishLoadwebViewDidStartLoad
因此,在调用 webViewDidFinishLoad 后(加载基本 html 时),页面中可能还有 JavaScript 或 Ajax 仍在执行。您需要等待所有这些都完成。

我建议尝试两种方法:

  1. 向UIWebView的loading属性添加一个观察者
  2. 将自定义 JavaScript 绑定(bind)到页面来判断您想要的事件是否真正发生(例如所有元素都已加载),然后使用 JavaScript 将您的回调回调到 Objective-C

后一个在处理自定义事件时更强大。我回答的这个问题可能会有所帮助:

  1. detect YouTube Player event and callback using UIWebView
  2. Javascript callback in Objective-C

关于javascript - UIWebView 和 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2778865/

相关文章:

javascript - 如何在 JQuery 中循环 each() 3 次

ios - Adcolony 无法找到当前可见的 UIViewController

iphone - iPhone/iPad 上的 Love2D

iphone - 如何在UITableView下面添加UIButton?

javascript - 尝试将数字标签转换为 int

javascript - Jquery inputmask 动态屏蔽特定电子邮件域

ios - 自定义类 "Cannot find interface declaration"中无法识别 Objective-C 类别方法

ios - 将字符串转换为日期并查找时差

javascript - Meteor 应用程序由于大(ish?)流量而失去与 MongoDB 的连接

ios - 将 IOS 中的应用程序功能限制为仅使用 Cell/WiFi 数据。