记录紫图高拍仪的一个使用兼容问题

本码农接到领导任务:需要将紫图高拍仪接入当前web系统.

但是由于本马大哈只埋头苦干,并没有询问开发详细细节,就导致项目发布到生产环境上问题百出.

主要问题有两点:
1.客户使用的浏览器为IE8,IE8在我眼里简直就是上个世纪的浏览器.
2.紫图提供的js文件问题

客户的浏览器一定为IE8,IE8是不支持websocket的,而紫图高拍仪的实现依赖于websocket,故紫图高拍仪无法在客户的电脑上运行.但是请大家看紫图弱智的驱动连接代码:

function ConnectServer(a, b) {
	"WebSocket" in window ? websocket = new WebSocket(websocketurl) : window.WebSocket ? websocket = new WebSocket(websocketurl) : "MozWebSocket" in window ? websocket = new MozWebSocket(websocketurl) : alert("浏览器版本太低!请使用Chrome、Firefox、IE10+浏览器!"), 
	websocket.onopen = function () {
        connected = !0, a(b)
    }, websocket.onclose = function () {
        connected = !1, onMessage({data: JSON.stringify({FuncName: "Connect", result: 0})})
    }, websocket.onmessage = function (a) {
        onMessage(a)
    }, websocket.onerror = function () {
    }
}

紫图在连接服务时如发现浏览器不支持websocket,alert提醒用户后竟然没有return,这就导致onopen这个函数报错,导致页面无法正常加载.
修改如下:

function ConnectServer(a, b) {
	"WebSocket" in window ? websocket = new WebSocket(websocketurl) : window.WebSocket ? websocket = new WebSocket(websocketurl) : "MozWebSocket" in window ? websocket = new MozWebSocket(websocketurl) : function(){
		alert("浏览器版本太低!请使用Chrome、Firefox、IE10+浏览器!");
		return;
	}, 
	websocket.onopen = function () {
        connected = !0, a(b)
    }, websocket.onclose = function () {
        connected = !1, onMessage({data: JSON.stringify({FuncName: "Connect", result: 0})})
    }, websocket.onmessage = function (a) {
        onMessage(a)
    }, websocket.onerror = function () {
    }
}

我事先是不知道IE8是不支持console的,但是我的代码页面使用了部分console来输出一些关键消息,线上发布一次版本过于耗时,于是想办法热更新JS文件自己在页面加载的时候给window对象予以console的定义:

window.console = window.console || (function () {
    var c ={}; 
   c.log = c.warn = c.debug = c.info = c.error = c.time = c.dir = c.profile= c.clear = c.exception = c.trace = c.assert = function(){};
    return c;
})();

上面代码来自百度"IE8不支持console".

在页面较前部分的script标签引入的任一js文件中加入上面的代码即可解决IE无法console打印的问题.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CSharp对接拍仪是指使用C#编程语言与拍仪进行数据通信和交互的过程。 首先,我们需要明确拍仪的功能和接口规范。拍仪通常提供API文档,其中包含了可供我们使用的函数和方法。 在C#中,我们可以使用System.IO和System.Net命名空间中的类来处理文件和网络通信。可以通过读取拍仪API文档,了解需要使用的函数和方法及其参数和返回值的具体意义。 其次,我们可以使用C#中的HttpClient类或WebClient类来与拍仪进行网络通信。根据拍仪的接口规范,我们可以发送请求到拍仪指定的URL并传递相应的参数,然后从返回的响应中获取所需的数据。 除了网络通信,拍仪通常还会涉及到文件的读写操作。在C#中,可以使用System.IO中的类来读写文件。根据拍仪的文档,我们可以将拍仪捕获到的图像保存为文件,或者从文件中读取图像数据,并对其进行操作。 最后,为了方便使用和维护,我们可以将与拍仪的通信封装成一个独立的类或模块。这个类可以包含与拍仪交互的功能函数,如打开拍仪、拍照、保存图像等。通过对接拍仪的类,我们可以在C#中轻松地调用这些功能,并获取到拍仪所提供的数据。 总的来说,使用C#对接拍仪主要是通过调用拍仪的API函数,发送请求并处理相应的数据。在C#中,我们可以利用网络通信和文件操作的相关类来实现与拍仪的数据交互。通过封装这些功能,可以方便地在C#项目中使用拍仪,并获取到所需的图像数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

再难也要坚持

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值