首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用UIWebView时,有没有办法从Objective-C访问DOM?

在iOS项目中,从Objective-C访问DOM是可能的,但是并不是很直接。你可以通过编写一些自定义的逻辑来实现从Objective-C访问DOM。其中最常见的方法是在JavaScript中嵌入一个<webview>元素,然后调用一些HTML/CSS的api来实现DOM内容的交互。

下面是一些可能有用的-webViewDidFinish:loadURL:forFrames:代理方法。

代码语言:objective-c
复制
- (void)webViewDidFinish:(UIWebView *)webView loadURL:(NSURL *)url forFrames:(WebFrameCollection *)frames {
    int i;
    for (i = 0; i< frames.count; i++) {
        NSArray *arr = frames.atIndexedSubscript(i).allFrames;
        for (int j = 0; j < arr.count; j++) {
            WKFrameInfo *frameInfo = arr.objectAtIndex(j);
            NSString *selector = frameInfo.request.dataInjectionPolicy == InjectionPolicy::ShouldProceedWithAllData ? @"click" : @"mousedown";
            [webView evaluateJavaScript:@selector name:selector forInjectedFrames:frames.allFrames];
        }
    }
    [webView.mainFrame evaluateJavaScript:@"document.readyState=='complete'" completionHandler:^(id response, NSError *error) {
        if (error) {
            NSLog(@"Error loading DOM: %@\n", [error description]);
        } else {
            NSDictionary *dict = response;
            // Do something with the DOM
        }
    }];
}

当然,这只是其中的一种方法,你可以根据需要自由调整,比如使用querySelector来获取DOM中的元素或调用JavaScript函数来读取或更新DOM内容。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券