当前位置: 代码迷 >> JavaScript >> 在iOS中,UIWebView如何在完成加载之前获取html DOM内容?
  详细解决方案

在iOS中,UIWebView如何在完成加载之前获取html DOM内容?

热度:40   发布时间:2023-06-05 10:21:07.0

我正在获取一个URL,我想像这样在UIWebView中显示它:

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

但是由于中国的网络限制,我们无法访问Google服务,但是具有此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文件,但是从服务器端来看,这些参数是动态的。

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

我的解决方案/解决方法是:

在发送url之后设置一个计时器,以便计时器将等待尝试检测接收到的DOM,以检查<head>是否曾经被很好地接收过。

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

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

因此,在将<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>成功注入到DOM的<head>中之后,我将不再关心何时整个过程完成了,如果我单击页面上的任何按钮,它将使用我刚刚注入到<head>的jquery代码而不是默认代码。

任何人都有更好的主意,请让我知道,谢谢。

  相关解决方案