webViewDidFinishLoad在从URL加载实际图形之前触发
webViewDidFinishLoad fires before the actual graph load from the URL
我正在加载一个由Nitro JS在原生IOS的web视图上绘制的图形。我有触发图形加载的URL。我面临的问题,因为webViewDidFinishLoad得到火之前实际的图形完全加载。
很可能在页面上的JS完成执行之前,页面加载实际上已经完成(从浏览器的角度来看)。实际上,这取决于页面上JS的结构,这可能是预期的行为,例如,当图形仍然异步加载时,页面可能是可见的。如果你能直接控制JS,你就可以改变这个行为
知道页面何时完全加载的唯一方法是自己做-将JavaScript事件侦听器附加到正在加载的页面中,并让它们使用一些专有url调用您的shouldStartLoadWithRequest:。例如,你可以创建一个JS函数来监听窗口加载或dom就绪事件等,这取决于你是否需要知道页面何时加载,或者如果只是dom已经加载等。根据你的需要。
如果这个网页不是你的,那么你可以把这个javascript放到一个文件中,并把它注入到你加载的每个页面。
例如,这里是JavaScript检测dom加载时的形式,可以从UIWebView注入到加载页面,然后导致调用shouldStartLoadWithRequest:(这将调用shouldStartLoadWithRequestwhen: dom已经完成加载,这是在完整的页面内容被显示之前,要检测这只是改变事件监听器)。
类似这样的草图形式:
var script = document.createElement('script');
script.type = 'text/javascript';
script.text = function DOMReady() {
document.location.href = "mydomain://DOMIsReady";
}
function addScript()
{
document.getElementsByTagName('head')[0].appendChild(script);
document.addEventListener('DOMContentLoaded', DOMReady, false);
}
addScript();
但这仍然不是100%完成,因为DOMContentLoaded不会等到所有资源(例如,图像)加载(见这里http://ie.microsoft.com/TEStdrive/HTML5/DOMContentLoaded/Default.html),所以一些调整可能仍然需要。如果你编写正在加载的页面/正在执行的javascript,你就会知道它什么时候完成,这样就可以适当地调整代码。如果你没有编写页面,那么注入的js可能必须在上述基础上进行增强,以考虑DOMContentLoaded不会等待的事实。
- 如何在从浏览缓存加载页面时执行javascript
- 如何在从多选下拉列表中选择选项值时动态生成文本框
- Jquery(多读/少读)在从数据库加载整个数据后不起作用
- 错误:Can't在从forEach循环发送标头后设置标头
- 如何在从客户端接收数据时从本机方法触发javascript函数?
- JQuery FullCalendar在从ajax成功调用rerenderEvents时遇到问题
- Node.js错误“;ReferenceError:全局未定义“;在从0.10.2更新到0.12.2之后
- 防止函数在从ajax再次调用后多次运行
- 在从HTML表单提交时从javascript运行php
- Wordpress TinyMCE在从文本切换到视觉时,如果锚标记包裹块元素,则会删除锚标记
- 如何在从下拉列表中选择不同的值后更新和调用javascript函数
- 如何在从外部连接时将外部文件包含到node-js项目中
- 在从索引位置返回的字符串中查找空白
- 如何在从顶部滚动时暂停转盘/滑块,并在滚动到顶部时重新开始
- Chrome,Safari在从本地存储读取时挂起,而Firefox很好
- ng-view 中的脚本在从文件引用时不起作用(JQuery 在角度之前加载)
- ASP:代码隐藏的字段变量在从更新面板中的服务器返回时丢失值
- 如何在从剃刀视图移动内联JavaScript时保留相对URL
- 无法在 meanjs 中使用 highcharts-ng 创建图形.如何从 MEANJS 中的现有表创建图形
- webViewDidFinishLoad在从URL加载实际图形之前触发