在 iOS UIWebView 中如何在完成加载之前获取 html DOM 内容?
In iOS UIWebView how to get html DOM content before it finished loading?
我得到一个 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]
但没有成功。
我的 solution/workaround 是:
在发送 url 后设置一个计时器,这样计时器会等待尝试检测收到的 DOM 以检查 <head>
是否已被正确接收。
在定时器运行期间,在DOM接收完成加载之前,接收到的DOM内容可能不是完整的。
不过没关系,因为我想做的是将一些 js 代码注入 <head>
,这是 DOM 内容的第一部分。
所以在我成功地将 <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
注入 DOM 中的 <head>
之后,我不会关心整个加载完成的时间,如果我点击任何按钮页面,它将使用我刚刚注入 <head>
的 jquery 代码,而不是默认代码。
谁有更好的主意,请告诉我,谢谢。
我得到一个 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]
但没有成功。
我的 solution/workaround 是:
在发送 url 后设置一个计时器,这样计时器会等待尝试检测收到的 DOM 以检查 <head>
是否已被正确接收。
在定时器运行期间,在DOM接收完成加载之前,接收到的DOM内容可能不是完整的。
不过没关系,因为我想做的是将一些 js 代码注入 <head>
,这是 DOM 内容的第一部分。
所以在我成功地将 <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
注入 DOM 中的 <head>
之后,我不会关心整个加载完成的时间,如果我点击任何按钮页面,它将使用我刚刚注入 <head>
的 jquery 代码,而不是默认代码。
谁有更好的主意,请告诉我,谢谢。