在document.onload之前触发webViewDidFinishLoad

时间:2015-04-20 10:47:50

标签: objective-c uiwebview

在执行任何其他脚本之前,我需要在我的UIWebView中加载一些js代码。不幸的是,似乎HTML document.onload在objective-c webViewDidFinishLoad回调之前执行。

检查此测试代码:

- (void)viewDidLoad {
    [super viewDidLoad];

    webView.delegate = self;

    [webView loadHTMLString:@"<body onload=\"alert('this is from html')\"></body>" baseURL:nil];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {

    [webView stringByEvaluatingJavaScriptFromString:@"alert('this is from obj-c')"];
}

消息“这是来自html”始终显示在消息“this is from obj-c”之前。 考虑到我无法控制我的html页面,我需要反过来考虑,所以我必须假设有一个document.onload函数被调用。

1 个答案:

答案 0 :(得分:0)

......好的发现......

我需要使用webViewDidStartLoad代替webViewDidFinishLoad

令我惊讶的是,在webViewDidStartLoad回调期间注入的jscode可用于加载的HTML页面。这对我来说意味着在webViewDidStartLoad之后没有重置UIWebView javascript引擎,这对我来说很好。