pdfjs意外的服务器响应,PDF.JS 异常处理

PDF.js 具体用法前面有写过,今天记录一下异常处理,我的 viewer.html 后面跟着的地址是服务器返回的地址然后用一个 iframe 标签加载,有时可能服务器发生异常,也可能打开瞬间被异地删除,再或者没有网络....

异常处理是在 pdf.js 的源码中增加代码,大约6287行,onStateChange 方法中监听:

onStateChange: function NetworkManger_onStateChange(xhrId, evt){

...

...

...

delete this.pendingRequests[xhrId];

/*我是与后台协商,异常返回450,其它返回的状态码还没有增加处理*/

if(xhr.status === 0 && this.isHttp) {

var eventClick = documet.createEvent(HTMLEvents);

eventClick.initEvent(notNet,false,false);

window.dispatchEvent(eventClick);

return;

}else if(chr.status === 450){

var eventClick = documet.createEvent(HTMLEvents);

eventClick.initEvent(fileErr,false,false);

window.dispatchEvent(eventClick);

}

...

...

...

}

调用 iframe 标签的文件增加监听:

iframe.addEventListener(notNet,function(){

console.log("网络异常")

});

iframe.addEventListener(fileErr,function(){

console.log("服务器异常")

})

PDF.js 具体用法前面有写过,今天记录一下异常处理,我的 viewer.html 后面跟着的地址是服务器返回的地址然后用一个 iframe 标签加载,有时可能服务器发生异常,也可能打开瞬间被异地删除,再或者没有网络.... 异常处理是在 pdf.js 的源码中增加代码,大约6287行,onStateChange 方法中监听: onStateChange: function NetworkManger_onStateChange(xhrId, evt){ ... ... ... delete this.pendingRequests[xhrId]; /*我是与后台协商,异常返回450,其它返回的状态码还没有增加处理*/ if(xhr.status === 0 && this.isHttp) { var eventClick = documet.createEvent(HTMLEvents); eventClick.initEvent(notNet,false,false); window.dispatchEvent(eventClick); return; }else if(chr.status === 450){ var eventClick = documet.createEvent(HTMLEvents); eventClick.initEvent(fileErr,false,false); window.dispatchEvent(eventClick); } ... ... ... } 调用 iframe 标签的文件增加监听: iframe.addEventListener(notNet,function(){ console.log("网络异常") }); iframe.addEventListener(fileErr,function(){ console.log("服务器异常") })
经验分享 程序员 微信小程序 职场和发展