前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >easynvr网页兼容调试:ie浏览器下的接口调用成功但页面无法显示实时的数据

easynvr网页兼容调试:ie浏览器下的接口调用成功但页面无法显示实时的数据

作者头像
EasyNVR
发布2020-04-23 15:51:24
1K0
发布2020-04-23 15:51:24
举报
文章被收录于专栏:EasyNVREasyNVREasyNVR

许多问题很难在开发的过程中就想的面面俱到,都是在实际应用、调试的过程中一一的优化的。由于easynvr的受众越来越多,因此也出现了好多在开发之初并没有留意的一些细节。我这次发现的问题就是给客户远程解决问题过程中发现的。在此记录下来方便自己,也方便大家了解。

问题概述

使用过easynvr的都知道,easynvr是通过通道配置来接入摄像头的,这些通道配置、通道展示……都是通过接口的调用来完成的。理论上,只要调用接口返回成功码,就表示该接口调用成功,后续操作得以进行。

接下来就是见证奇怪的时刻:在给客户远程时发现,当成功调用接口后,浏览器没有第一时间将接口返回的数据进行处理展示操作。

easynvr
easynvr

1.只要rtsp地址没有问题,我这边配置成功,在视频广场应该是会出现对应的视频通道信息的。

easynvr
easynvr

2.页面也是提示 配置成功,并且通道也是开启的。

easynvr
easynvr

3.空空如也的视频广场,亮瞎了。。

eas有nvr
eas有nvr

4.再次回到通道配置查看,发现之前的成功配置不见了。。。

问题分析

出现这样的问题,第一时间想到的是数据是否设置成功。经过我的验证,发现接口设置数据是成功的。而且重点是这个问题在其他浏览器上都没有出现,偏偏在IE上会出现。。。。

不得不让我想到是不是又是兼容性的问题。。。

经过上网查阅资料发现。这个问题的原因在于ie浏览器自身。

ie浏览器在调用一个接口成功后,下次调用会优先获取上次接口在浏览器中的缓存数据。也就是我们调用接口获取的数据,虽然是通过该接口获得,但不一定是实时的、最新的。

解决问题:

我们为了确保每次调用接口的不同,我们需要在每次调用接口时,给接口传递一个唯一、不重复的参数。

$.get(_url + "/getchannelsconfig?t="+new Date().getTime());

easynvr最终选择是在调用对应接口时,传递一个时间参数,可以保证他的唯一性。这样每次浏览器识别的接口一样,但是传递这个参数是不同的,就会获取到实时信息。

效果也是明显:

easynvr
easynvr
easynvr
easynvr

备注:由于easynvr通过接口获取的数据相对来说是有点多的,因此每次通过接口获取数据,相对来说是有点影响加载效果的,没有在缓存中直接提取来的迅速。因此除非必须使用ie浏览器,否则不建议通过这种方式来实现此效果。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题概述
  • 问题分析
  • 解决问题:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档