2015-04-20 50 views
0

在執行任何其他腳本之前,我需要在我的UIWebView中加載的網頁上注入一些js代碼。不幸的是,似乎HTML document.onload在objective-c webViewDidFinishLoad回調之前執行。在document.onload之前觸發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」消息之前將始終顯示「這是從OBJ-C」。 我需要反過來考慮我無法控制我的html頁面,所以我必須假定有一個document.onload函數被調用。

回答

0

...好吧...發現

我需要使用webViewDidStartLoad,而不是webViewDidFinishLoad

令人驚訝的是,在webViewDidStartLoad回調期間注入的jscode可用於加載的HTML頁面。這意味着我的UIWebView JavaScript引擎不會重置webViewDidStartLoad這對我來說很好。