LodopFuncs.js 7.6 KB
Newer Older
钟是志's avatar
钟是志 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
var CreatedOKLodop7766 = null;
var LODOP;
//====获取工程路径:====
//isPath True表示获取的是路径(如:http://localhost:8080/ips/),false则返回上下文路径(如:/ips/),默认为false
function getContextOrPath(isPath) {
  var isPath = isPath || false;
  var href = window.location.pathname;
  var path = window.location.protocol + '//' + window.location.host;
  var index = 0, j = 0;
  for (var i = 0; i < href.length; i++) {
    if (href.charAt(i) == '/') {
      index = i;
      j++;
      if (j == 2) {
        break;
      }
    }
  }
  var context = href.substr(0, index + 1);
  if (isPath)
    return context;
  else
    return path + context;
}

//====判断是否需要安装CLodop云打印服务器:====
function needCLodop() {
  return true;
};

//====页面引用CLodop云打印必须的JS文件:====暂不启用该方式
if (needCLodop()) {
  var head = document.head || document.getElementsByTagName('head')[0] || document.documentElement;
  var oscript = document.createElement('script');
  oscript.src = 'http://localhost:18000/CLodopfuncs.js?priority=0';
  head.insertBefore(oscript, head.firstChild);
}

//====获取LODOP对象的主过程:====
export function getLodop(dir, oOBJECT, oEMBED) {
  var basePath = '';
  if (typeof (basePath) == 'undefined') {
    basePath = getContextOrPath(false);
  }
钟是志's avatar
钟是志 committed
45
  var path = window.location.origin + '/zyd/';
钟是志's avatar
钟是志 committed
46 47 48 49
  if(window.location.origin.indexOf('localhost') > -1){
    path = window.location.origin + '/';
  }
  console.log(path);
钟是志's avatar
钟是志 committed
50 51 52 53
  var strHtmInstall = '<br><font color=\'#FF00FF\'>打印控件未安装!点击这里<a href=\'' + path + 'CLodop_32_Print.zip\' target=\'_self\'>执行安装</a>,安装后请刷新页面或重新进入。</font>';
  var strHtmUpdate = '<br><font color=\'#FF00FF\'>打印控件需要升级!点击这里<a href=\'' + path + 'CLodop_32_Print.zip\' target=\'_self\'>执行升级</a>,升级后请重新进入。</font>';
  var strHtm64_Install = '<br><font color=\'#FF00FF\'>打印控件未安装!点击这里<a href=\'' + path + 'CLodop_32_Print.zip\' target=\'_self\'>执行安装</a>,安装后请刷新页面或重新进入。</font>';
  var strHtm64_Update = '<br><font color=\'#FF00FF\'>打印控件需要升级!点击这里<a href=\'' + path + 'CLodop_32_Print.zip\' target=\'_self\'>执行升级</a>,升级后请重新进入。</font>';
钟是志's avatar
钟是志 committed
54 55
  var strHtmFireFox = '<br><br><font color=\'#FF00FF\'>(注意:如曾安装过Lodop旧版附件npActiveXPLugin,请在【工具】->【附加组件】->【扩展】中先卸它)</font>';
  var strHtmChrome = '<br><br><font color=\'#FF00FF\'>(如果此前正常,仅因浏览器升级或重安装而出问题,需重新执行以上安装)</font>';
钟是志's avatar
钟是志 committed
56 57
  var strCLodopInstall = '<br><font color=\'#FF00FF\'>CLodop云打印服务(localhost本地)未安装启动!点击这里<a href=\'' + path + 'CLodop_32_Print.zip\' target=\'_self\'>执行安装</a>,安装后请刷新页面。</font>';
  var strCLodopUpdate = '<br><font color=\'#FF00FF\'>CLodop云打印服务需升级!点击这里<a href=\'' + path + 'CLodop_32_Print.zip\' target=\'_self\'>执行升级</a>,升级后请刷新页面。</font>';
钟是志's avatar
钟是志 committed
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
  var LODOP;
  try {
    var isIE = (navigator.userAgent.indexOf('MSIE') >= 0) || (navigator.userAgent.indexOf('Trident') >= 0);
    if (needCLodop()) {
      try {
        LODOP = getCLodop();
      } catch (err) {
      }
      ;
      if (!LODOP && document.readyState !== 'complete') {
        //alert("C-Lodop没准备好,请稍后再试!"+(!LODOP)); return;
      }
      ;
      if (!LODOP) {
        if (isIE) document.write(strCLodopInstall); else
          document.documentElement.innerHTML = strCLodopInstall;
        return;
      } else {

        if (CLODOP.CVERSION < '3.0.0.2') {
          if (isIE) document.write(strCLodopUpdate); else
            document.documentElement.innerHTML = strCLodopUpdate;
        }
        ;
        if (oEMBED && oEMBED.parentNode) oEMBED.parentNode.removeChild(oEMBED);
        if (oOBJECT && oOBJECT.parentNode) oOBJECT.parentNode.removeChild(oOBJECT);
      }
      ;
    } else {
      var is64IE = isIE && (navigator.userAgent.indexOf('x64') >= 0);
      //=====如果页面有Lodop就直接使用,没有则新建:==========
      if (oOBJECT != undefined || oEMBED != undefined) {
        if (isIE) LODOP = oOBJECT; else LODOP = oEMBED;
      } else if (CreatedOKLodop7766 == null) {
        LODOP = document.createElement('object');
        LODOP.setAttribute('width', 0);
        LODOP.setAttribute('height', 0);
        LODOP.setAttribute('style', 'position:absolute;left:0px;top:-100px;width:0px;height:0px;');
        if (isIE) LODOP.setAttribute('classid', 'clsid:2105C259-1E0C-4534-8141-A753534CB4CA');
        else LODOP.setAttribute('type', 'application/x-print-lodop');
        document.documentElement.appendChild(LODOP);
        CreatedOKLodop7766 = LODOP;
      } else LODOP = CreatedOKLodop7766;
      //=====Lodop插件未安装时提示下载地址:==========
      if ((LODOP == null) || (typeof (LODOP.VERSION) == 'undefined')) {
        if (navigator.userAgent.indexOf('Chrome') >= 0)
          document.documentElement.innerHTML = strHtmChrome + document.documentElement.innerHTML;
        if (navigator.userAgent.indexOf('Firefox') >= 0)
          document.documentElement.innerHTML = strHtmFireFox + document.documentElement.innerHTML;
        if (is64IE) document.write(strHtm64_Install); else if (isIE) document.write(strHtmInstall); else
          document.documentElement.innerHTML = strHtmInstall + document.documentElement.innerHTML;
        return LODOP;
      }
      ;
    }
    ;
    if (LODOP.VERSION < '6.2.1.8') {
      if (!needCLodop()) {
        if (is64IE) document.write(strHtm64_Update); else if (isIE) document.write(strHtmUpdate); else
          document.documentElement.innerHTML = strHtmUpdate + document.documentElement.innerHTML;
      }
      ;
      return LODOP;
    }
    ;
    //===如下空白位置适合调用统一功能(如注册语句、语言选择等):===
    LODOP.SET_SHOW_MODE('LANGUAGE', 0);
    LODOP.SET_LICENSES('成都市知用科技有限公司', '649677881727389907689190562356', '', '');
126
    console.log('licenses注入语句已执行');
钟是志's avatar
钟是志 committed
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
    //===========================================================
    return LODOP;
  } catch (err) {
    alert('getLodop出错:' + err);
  }
  ;
};
/*
加载script标签
urlArr:加载路径的队列
callback:回调函数
*/
var loadScript = function(urlArr, callback) {
  if (urlArr && Object.prototype.toString.call(urlArr) === '[object Array]') {
    var src = urlArr.pop();
    var head = document.head || document.getElementsByTagName('head')[0] || document.documentElement;
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = src;
    script.reload = 1;
    //借鉴了jQuery的script跨域方法
    script.onload = script.onreadystatechange = function() {
      console.log('打印插件加载成功');
      if ((!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete')) {
        script.onload = script.onreadystatechange = null;
        if (urlArr.length > 0) {
          loadScript(urlArr, callback);
        } else {
          if (typeof callback == 'function') {
            callback && callback();
          }
        }
      }
    };
    script.onerror = function() {
      callback && callback();
    };
    head.insertBefore(script, head.firstChild);
  }
};

var urlArr = [];
if (window.location.protocol === 'http:') {
  urlArr[0] = `http://localhost:18000/CLodopFuncs.js?priority=0`;
} else {
  urlArr[0] = `https://localhost:8443/CLodopFuncs.js?priority=0`;
}
loadScript(urlArr, function() {
  LODOP = getLodop();
});