在iOS UIWebView中如何在它完成加载之前获得html DOM内容

In iOS UIWebView how to get html DOM content before it finished loading?

本文关键字:内容 DOM html 加载 UIWebView iOS      更新时间:2023-09-26

我得到一个url,我想在我的UIWebView中像这样呈现它:

request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
[_webView loadRequest:request];

但是由于中国的网络限制,我们无法访问谷歌服务,但是这个url的页面正在使用:

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

所以我不得不等待很长一段时间,因为它无法从ajax.googleapis.com获得js文件,我想做的是与本地js文件交换这个脚本源,以便在将来启用javascript调用。

我想如果我能在DOM完成加载之前得到它,那么我可以像这样添加我的脚本源:

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>

但是我怎么做呢?

我试图加载我的本地html文件,但参数是动态的从服务器端。

我试图调用[_webView stringByEvaluatingJavaScriptFromString:url]在所有的UIWebView委托方法,但没有工作。

我的解决方案是:

在发送url后设置一个计时器,以便计时器等待尝试检测接收到的DOM,以检查<head>是否已经收到一次。

在计时器运行期间,接收到的DOM内容可能不是完整的,直到DOM接收完成加载。

但是没关系,因为我想做的是注入一些js代码到<head>,这是DOM内容的第一部分。

所以当我成功地将<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>注入到DOM中的<head>之后,我不会关心整个东西什么时候完成加载,如果我点击页面上的任何按钮,它会使用我刚刚注入到<head>中的jquery代码,而不是默认的。

谁有更好的主意,请告诉我,谢谢。