gpt4 book ai didi

javascript - UIWebView 和 JavaScript

转载 作者:行者123 更新时间:2023-11-28 02:55:27 25 4
gpt4 key购买 nike

我发现 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com