WebView 解決單頁應(yīng)用Vue無法在回調(diào)中獲取數(shù)據(jù)的辦法

這段時間在開發(fā)一個應(yīng)用,其中大部分頁面是加載Web頁面,而UINavigationController原生框架的標(biāo)題是根據(jù)頁面加載結(jié)束,回調(diào)UIWebViewDelegate的時候獲取的,示例代碼如下。

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    self.navigationItem.title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];
}

大部分Web頁面跳轉(zhuǎn)頁面的時候都是重新加載URL,從而會觸發(fā)UIWebViewDelegate回調(diào)。
問題來了,如果是Vue單頁應(yīng)用呢?因為Vue在加載時會一次性加載所有內(nèi)容,而在該頁面操作跳轉(zhuǎn)都不需要重新加載URL,就不會觸發(fā)UIWebViewDelegate回調(diào)。
可是如果我們還是需要在每次切換頁面的時候獲取Web信息時該怎么辦呢,顯然從UIWebViewDelegate回調(diào)中獲取是不可能的了。在網(wǎng)上搜索了一下,基本的辦法都是讓W(xué)eb開發(fā)修改代碼或者增加Schema調(diào)用。
辦法總是有的,畢竟Web頁面是運行在原生上,如果原生都無法解決這問題,還怎么混下去。
現(xiàn)在說一下我的解決辦法,用幀刷新回調(diào)!
因為我這里的需求就是獲取Web頁面的標(biāo)題和加載情況等,所以我可以在每一幀的回調(diào)中獲取Web頁面的狀態(tài)(這里就不要用定時器了,你確定每秒執(zhí)行一次?看看CPU占用率?。?br> 直接上代碼吧

@interface WebViewController ()<UIWebViewDelegate>

@property(nonatomic, retain) UIWebView *webView;

@property(nonatomic, retain) CADisplayLink *displayLick;

@end
@implementation WebViewController
- (void) viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    if(_displayLick == nil){  // 初始化幀回調(diào)
        _displayLick = [CADisplayLink displayLinkWithTarget:self selector:@selector(handleDisplayLink)];
    }
    [_displayLick addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];  // 因為viewWillAppear是在主線程里面執(zhí)行的,所以是添加到主線程的RunLoop。
}
- (void) viewDidDisappear:(BOOL)animated
{
    if(_displayLick != nil){ // 跳轉(zhuǎn)到其他頁面就把幀回調(diào)移除
        [_displayLick removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    }
}
- (void) handleDisplayLink
{
    self.navigationItem.title = [_webView stringByEvaluatingJavaScriptFromString:@"document.title"]; // 獲取標(biāo)題
    _webView.isLoading; // 是否正在加載
}
@end
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容