1 | !(function(){
|
2 | var Fws = function(){
|
3 | var _ts = this;
|
4 | _ts.socket = io(socketServer);
|
5 |
|
6 | _ts.socket.on('refresh',function(result){
|
7 | if(result && result.status === 'success'){
|
8 | var pathInfo = _ts.getPathInfo(result.path);
|
9 |
|
10 | switch (pathInfo.fileType) {
|
11 | case 'html':
|
12 | _ts.refresh();
|
13 | break;
|
14 | case 'css':
|
15 | _ts.updateCss();
|
16 | break;
|
17 | case 'js':
|
18 | _ts.refresh();
|
19 |
|
20 | break;
|
21 | default:
|
22 | _ts.log('更新信息:',result);
|
23 | break;
|
24 | };
|
25 | };
|
26 |
|
27 | });
|
28 | _ts.socket.emit('pageLoad',{
|
29 | url:location.href
|
30 | });
|
31 | };
|
32 |
|
33 | Fws.prototype = {
|
34 | log:function(){
|
35 | var arg = arguments;
|
36 | if(typeof window.console === 'object' && typeof window.console.log === 'function'){
|
37 | console.log.apply(null,arguments);
|
38 | };
|
39 | },
|
40 |
|
41 | getPathInfo:function(path){
|
42 | path = path || '';
|
43 | var aDir = path.split('\\');
|
44 | if(aDir.length === 1){
|
45 | aDir = path.split('/');
|
46 | };
|
47 |
|
48 | var fileName = aDir[aDir.length - 1].toLowerCase(),
|
49 | afileType = fileName.split('.'),
|
50 | fileType = afileType[afileType.length - 1];
|
51 |
|
52 | return {
|
53 | fileName:fileName,
|
54 | fileType:fileType
|
55 | };
|
56 | },
|
57 |
|
58 | getUrlInfo:function(url){
|
59 | var aFile = url.split('?')[0].split('/'),
|
60 | fileName = aFile[aFile.length - 1].toLowerCase(),
|
61 | afileType = fileName.split('.'),
|
62 | fileType = afileType[afileType.length - 1];
|
63 | return {
|
64 | fileName:fileName,
|
65 | fileType:fileType
|
66 | };
|
67 | },
|
68 |
|
69 | newUrl:function(url){
|
70 | var re = /ver=(\d)*/,
|
71 | newVer = 'ver='+ new Date().valueOf();
|
72 |
|
73 | if(re.test(url)){
|
74 | return url.replace(re,newVer);
|
75 | }else if(url.indexOf('?') > -1){
|
76 | return url + '&' + newVer;
|
77 | }else{
|
78 | return url + '?' + newVer;
|
79 | };
|
80 | },
|
81 |
|
82 | refresh:function(){
|
83 | var _ts = this;
|
84 | location.reload(true);
|
85 | },
|
86 |
|
87 | updateCss:function(){
|
88 | var _ts = this,
|
89 | obj = document.getElementsByTagName('link');
|
90 |
|
91 | for(var i = 0,len = obj.length; i < len; i++){
|
92 | var href = obj[i].href;
|
93 | obj[i].href = _ts.newUrl(href);
|
94 | };
|
95 | },
|
96 |
|
97 | updateJs:function(){
|
98 | var _ts = this,
|
99 | obj = document.getElementsByTagName('script');
|
100 |
|
101 | for(var i = 0,len = obj.length; i < len; i++){
|
102 | var src = obj[i].src;
|
103 | obj[i].src = _ts.newUrl(src);
|
104 | };
|
105 | },
|
106 |
|
107 | updateReact:function(){
|
108 | var _ts = this,
|
109 | obj = document.getElementsByTagName('img');
|
110 | for(var i = 0,len = obj.length; i < len; i++){
|
111 | var src = obj[i].src;
|
112 | obj[i].src = _ts.newUrl(src);
|
113 | };
|
114 | }
|
115 | };
|
116 | var init = new Fws();
|
117 | })();
|