447 lines
12 KiB
JavaScript
447 lines
12 KiB
JavaScript
// *****************************************************************************
|
||
// 文 件 名: japp.js
|
||
// 作 者: wsj
|
||
// 版 本: 1.0.0.0
|
||
// 日 期: 2014-07-15
|
||
// 文件描述:
|
||
// JVccBar的全局处理函数
|
||
// 说 明:
|
||
// JVccBar的全局处理函数
|
||
// 修改说明:
|
||
// *****************************************************************************
|
||
|
||
var application = null;
|
||
|
||
//电话条显示类型
|
||
var showStyleNONE = 0;
|
||
var showStyleOCX = 1;
|
||
var showStyleJS = 2;
|
||
var showStyleAUTTO = 3;
|
||
var showStyleSL = 4;
|
||
|
||
//实际电话条类型使用类型
|
||
var vccBarTypeOCX = 0;
|
||
var vccBarTypeHTML5 = 1;
|
||
var vccBarTypeSILVERLIGHT = 2;
|
||
/////////////////////////////////
|
||
// 全局对外函数
|
||
/////////////////////////////////
|
||
|
||
|
||
|
||
function applicationLoad(left,top,width,height,showstyle,relationPath,callback){
|
||
if(application != null)
|
||
{
|
||
return ;
|
||
}
|
||
if(typeof(relationPath) == "undefined"){
|
||
relationPath = "";
|
||
}
|
||
loadJsFile(relationPath+"jquery-easyui-1.4/jquery.min.js");
|
||
loadJsFile(relationPath+"jquery-easyui-1.4/jquery.easyui.min.js");
|
||
loadCssFile(relationPath+"jquery-easyui-1.4/themes/default/easyui.css");
|
||
loadCssFile(relationPath+"jquery-easyui-1.4/themes/icon.css");
|
||
|
||
loadJsFile(relationPath+"scripts/core/jbardef.js");
|
||
loadJsFile(relationPath+"scripts/core/japsp.js");
|
||
loadJsFile(relationPath+"scripts/core/jpublic.js");
|
||
loadJsFile(relationPath+"scripts/core/jmonitor.js");
|
||
loadJsFile(relationPath+"scripts/core/jslctrl.js");
|
||
loadJsFile(relationPath+"scripts/core/jhtml5ctrl.js");
|
||
loadJsFile(relationPath+"scripts/core/jvccbar.js");
|
||
loadJsFile(relationPath+"scripts/core/jocxctrl.js");
|
||
loadJsFile(relationPath+"scripts/core/jbarassist.js");
|
||
|
||
var bJsUi = false;
|
||
var sleepTime = 1000;
|
||
if(showstyle == showStyleJS){
|
||
bJsUi = true;
|
||
}
|
||
else if(showstyle == showStyleAUTTO){
|
||
if(IsWebSocketValid() == true){
|
||
bJsUi = true;
|
||
}
|
||
}
|
||
if(bJsUi == true)
|
||
{
|
||
sleepTime = 3000;
|
||
loadJsFile(relationPath+"scripts/jbardisplay.js");
|
||
loadJsFile(relationPath+"scripts/jwechat.js");
|
||
}
|
||
|
||
application = new JApplication(left,top,width,height,showstyle,relationPath);
|
||
application.onLoad = callback;
|
||
|
||
setTimeout(createBar,sleepTime);
|
||
}
|
||
|
||
function applicationUnLoad()
|
||
{
|
||
if(application != null)
|
||
{
|
||
if(application.oJVccBar != null)
|
||
{
|
||
application.oJVccBar.UnInitial();
|
||
}
|
||
if(application.oJMonitor != null)
|
||
{
|
||
delete application.oJMonitor;
|
||
application.oJMonitor = null;
|
||
}
|
||
if(application.oJBarDisplayer != null)
|
||
{
|
||
delete application.oJBarDisplayer;
|
||
application.oJBarDisplayer = null;
|
||
}
|
||
delete application;
|
||
application = null;
|
||
}
|
||
}
|
||
|
||
function createBar()
|
||
{
|
||
//1、创建电话条对象
|
||
application.oJVccBar = new JVccBar(application.left,application.top,application.width,application.height,application.showstyle,null);
|
||
|
||
//2、创建内联的电话条界面,并和电话条对象建立关系
|
||
application.CreateBarDisplay();
|
||
application.oJVccBar.SetInlineShowBar(application.oJBarDisplayer);
|
||
|
||
//3、电话条辅助功能
|
||
application.InitAssist();
|
||
|
||
if(application.onLoad)
|
||
{
|
||
application.onLoad();
|
||
loadDebug();
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
function JApplication(left,top,width,height,showstyle,relationPath)
|
||
{
|
||
this.oJVccBar = null; //电话条对象
|
||
this.oJMonitor = null; //监控对象
|
||
this.oJBarDisplayer = null; //显示对象
|
||
this.oWecharCtrl = null; //微信展示界面
|
||
|
||
this.oWechatManager = null; //微信数据管理
|
||
this.oVccBarAssist = null; //辅助管理模块
|
||
this.onLoad = null; //电话创建完毕回调函数
|
||
this.oBrowserSys = null; //浏览器对象
|
||
this.oLogDisplay = null; //日志显示界面
|
||
this.RelationPath = "";
|
||
|
||
//电话条位置
|
||
this.left = left;
|
||
this.top = top;
|
||
this.width = width;
|
||
this.height = height;
|
||
|
||
this.showstyle = showstyle;
|
||
this.surpportWebsocket = false;
|
||
this._contentWindow = window;
|
||
|
||
//--------------------------------------------------------------------------------------------------
|
||
// 公用函数
|
||
//--------------------------------------------------------------------------------------------------
|
||
//1、创建内置电话界面
|
||
this.CreateBarDisplay =function() {
|
||
if( this.showstyle == showStyleJS || this.showstyle == showStyleAUTTO){
|
||
if( this.IsSurpportWebSocket() ) {
|
||
this.oJBarDisplayer = new JBarDisplay(this.left,this.top,this.width,this.height,this._contentWindow);
|
||
}
|
||
}
|
||
}
|
||
//2、创建内置电话界面
|
||
this.InitAssist = function() {
|
||
// 1)、微信数据管理
|
||
this.oWechatManager = new JWechChatManager();
|
||
// 2)、界面控制
|
||
this.oVccBarAssist = new JVccBarAssist();
|
||
|
||
}
|
||
//3、电话条对象和监控对象相互绑定
|
||
this.BindMonitorBarToEachOther = function(oMonitor) {
|
||
try
|
||
{
|
||
oMonitor = (typeof(oMonitor) == "undefined")?this.oJMonitor:oMonitor;
|
||
if( oMonitor == null)
|
||
{
|
||
alert("监控控件没有初始化!");
|
||
return;
|
||
}
|
||
oMonitor.SetVccBarCtrl(this.oJVccBar);
|
||
this.oJVccBar.SetMonitorCtrl(oMonitor);
|
||
}
|
||
catch(e){
|
||
alert(e.message);
|
||
}
|
||
}
|
||
//4、得到主目录路径
|
||
this.GetRelationPath = function(){
|
||
return this.RelationPath;
|
||
}
|
||
//是否支持websocket
|
||
this.IsSurpportWebSocket = function(){
|
||
return this.surpportWebsocket ;
|
||
}
|
||
//显示日志内容
|
||
this.Log = function (str1){
|
||
if(this.oLogDisplay == null){
|
||
this.oLogDisplay = this._contentWindow.document.createElement("DIV");
|
||
this.oLogDisplay.style.cursor = "move";
|
||
this.oLogDisplay.style.position = "relative";
|
||
this.oLogDisplay.style.border = "0px solid #0000ff";
|
||
this.oLogDisplay.style.left = (this.left+350)+"px";
|
||
this.oLogDisplay.style.top = (this.top+150)+"px";
|
||
this.oLogDisplay.style.width = "600px";
|
||
this.oLogDisplay.style.height = "300px";
|
||
this.oLogDisplay.style.display = "none";
|
||
this.oLogDisplay.style.zIndex = "1000";
|
||
this._contentWindow.document.body.appendChild(this.oLogDisplay);
|
||
this.oLogDisplay.innerHTML ="<TEXTAREA id=\"idLog\" rows=\"33\" cols=\"100\" value=\"日志\" style=\"overflow:auto;font-family:verdana;font-size:12px\"></TEXTAREA>";
|
||
}
|
||
if(str1 == ""){return;}
|
||
var oLog = this._contentWindow.document.getElementById("idLog");
|
||
oLog.value=oLog.value+str1+"\r\n";
|
||
|
||
}
|
||
//控制日志是否显示
|
||
this.DislayLog = function(showFlag){
|
||
if(this.oLogDisplay == null){
|
||
this.Log("");
|
||
}
|
||
if(showFlag == 1){
|
||
this.oLogDisplay.style.display = "block";
|
||
}else{
|
||
this.oLogDisplay.style.display = "none";
|
||
}
|
||
}
|
||
|
||
//--------------------------------------------------------------------------------------------------
|
||
// 事件
|
||
//--------------------------------------------------------------------------------------------------
|
||
|
||
|
||
//--------------------------------------------------------------------------------------------------
|
||
// 辅助函数
|
||
//--------------------------------------------------------------------------------------------------
|
||
|
||
this._Create = function() {
|
||
this.surpportWebsocket = IsWebSocketValid();
|
||
this.oBrowserSys = this._GetBrowerSys();
|
||
}
|
||
this._GetBrowerSys =function _GetBrowerSys() {
|
||
this.os = "";
|
||
this.version = "";
|
||
var ua = navigator.userAgent.toLowerCase();
|
||
if(ua.indexOf("msie")>0)
|
||
{
|
||
this.os = "msie";
|
||
this.version = ua.match(/msie ([\d.]+)/)[1];
|
||
}
|
||
else if (ua.lastIndexOf("firefox")>0)
|
||
{
|
||
this.os = "firefox";
|
||
this.version = ua.match(/firefox\/([\d.]+)/)[1];
|
||
}
|
||
else if (ua.lastIndexOf("chrome")>0)
|
||
{
|
||
this.os = "chrome";
|
||
this.version = ua.match(/chrome\/([\d.]+)/)[1];
|
||
}
|
||
else
|
||
{
|
||
if(isIE())
|
||
{
|
||
this.os = "msie";
|
||
this.version = "11.0";
|
||
loadHeadMeta();
|
||
}
|
||
else
|
||
{
|
||
this.os = ua;
|
||
this.version = "";
|
||
}
|
||
}
|
||
if(getLocalLanguage() == "zh-cn")
|
||
this.expression = "ua:【"+ua+"】\r\nos:【"+this.os+"】 version:【"+this.version+"】\r\nwebsocket:【"+((this.surpportWebsocket == true)?"支持":"不支持")+"】";
|
||
else
|
||
this.expression = "ua:["+ua+"]\r\nos:["+this.os+"] version:["+this.version+"]\r\nwebsocket:["+((this.surpportWebsocket == true)?"surpport":"unsurpport")+"]";
|
||
|
||
return this;
|
||
}
|
||
|
||
|
||
this._Create();
|
||
}
|
||
|
||
|
||
//--------------------------------------------------------------------------------------------------
|
||
// 全局函数
|
||
//--------------------------------------------------------------------------------------------------
|
||
|
||
|
||
function loadHeadMeta()
|
||
{
|
||
var oHead = document.getElementsByTagName('HEAD').item(0);
|
||
var oScript= document.createElement("meta");
|
||
oScript.setAttribute("http-equiv","X-UA-Compatible");
|
||
oScript.setAttribute("content","IE=10");
|
||
oHead.appendChild( oScript);
|
||
}
|
||
|
||
|
||
|
||
function loadJsFile(strFileName)
|
||
{
|
||
var oHead = document.getElementsByTagName('HEAD').item(0);
|
||
var oScript= document.createElement("script");
|
||
oScript.type = "text/javascript";
|
||
oScript.src = strFileName;
|
||
oHead.appendChild( oScript);
|
||
}
|
||
|
||
|
||
function loadCssFile(strFileName)
|
||
{
|
||
var oHead = document.getElementsByTagName('HEAD').item(0);
|
||
var oScript= document.createElement("link");
|
||
oScript.setAttribute("rel","stylesheet");
|
||
oScript.setAttribute("type","text/css");
|
||
oScript.setAttribute("href",strFileName);
|
||
oHead.appendChild( oScript);
|
||
}
|
||
|
||
|
||
function IsWebsocketExist(){
|
||
if(!window.WebSocket && window.MozWebSocket)
|
||
window.WebSocket=window.MozWebSocket;
|
||
if(!window.WebSocket)
|
||
return false;
|
||
return true;
|
||
}
|
||
|
||
|
||
function IsWebSocketValid()
|
||
{
|
||
return IsWebsocketExist();
|
||
try{
|
||
var dummy = new WebSocket("ws://localhost:8989/test");
|
||
}
|
||
catch (ex)
|
||
{
|
||
try
|
||
{
|
||
webSocket = new MozWebSocket("ws://localhost:8989/test");
|
||
}
|
||
catch(ex)
|
||
{
|
||
return false;
|
||
}
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
|
||
function isIE()
|
||
{
|
||
try
|
||
{
|
||
if (!!window.ActiveXObject || "ActiveXObject" in window)
|
||
return true;
|
||
else
|
||
return false;
|
||
}
|
||
catch(e)
|
||
{
|
||
return false;
|
||
}
|
||
}
|
||
|
||
function getLocalLanguage()
|
||
{
|
||
var type = navigator.appName;
|
||
var lang = "";
|
||
if(type == "Netscape")
|
||
{
|
||
lang = navigator.language;
|
||
}
|
||
else{
|
||
lang = navigator.userLanguage;
|
||
}
|
||
//zh-CN zh-tw
|
||
return lang.toLowerCase();
|
||
}
|
||
|
||
var gDebug = null;
|
||
/*
|
||
function loadDebug()
|
||
{
|
||
document.onkeydown = hotkey;
|
||
if(gDebug == null)
|
||
{
|
||
gDebug = window.document.createElement("DIV");
|
||
gDebug.style.cursor = "move";
|
||
gDebug.style.position = "relative";
|
||
gDebug.style.border = "1px solid #0000ff";
|
||
gDebug.style.left = "50px";
|
||
gDebug.style.top = (document.body.clientHeight-100)+"px";
|
||
gDebug.style.width = "600px";
|
||
gDebug.style.height = "426px";
|
||
gDebug.style.display = "none";
|
||
window.document.body.appendChild(gDebug);
|
||
var innerHtml = "<INPUT type=\"text\" id=\"debugCmd\" NAME=\"debugCmd\" size=\"40\" title=\"命令方法\" onkeypress='onDebugger();'>";
|
||
innerHtml = innerHtml + "<TEXTAREA id=\"debugInfo\" rows=\"33\" cols=\"100\" value=\"日志\" style=\"overflow:auto;font-family:verdana;font-size:12px\"></TEXTAREA>";
|
||
gDebug.innerHTML = innerHtml;
|
||
}
|
||
|
||
}
|
||
*/
|
||
|
||
/*function hotkey(e)
|
||
{
|
||
|
||
try
|
||
{
|
||
var keynum = null;
|
||
if (window.event) {// IE
|
||
keynum = e.keyCode;
|
||
}
|
||
else if(e.which){// Netscape/Firefox/Opera
|
||
keynum = e.which;
|
||
}
|
||
if(keynum == null)
|
||
return ;
|
||
e = e || window.event;
|
||
if(e.altKey && e.keyCode == 68)//keycode 68 = d D
|
||
{//keycode 72 = h H
|
||
if(gDebug != null)
|
||
gDebug.style.display = "block";
|
||
}
|
||
if(e.altKey && e.keyCode == 72)//keycode 72 = h H
|
||
{//
|
||
if(gDebug != null)
|
||
gDebug.style.display = "none";
|
||
}
|
||
}
|
||
catch(ex) {
|
||
}
|
||
}
|
||
*/
|
||
|
||
/*function onDebugger()
|
||
{
|
||
if (event.keyCode != 13)
|
||
return ;
|
||
var oCmd = window.document.getElementById("debugCmd");
|
||
if(oCmd == null)
|
||
return ;
|
||
var strCmd = oCmd.value;
|
||
alert(strCmd);
|
||
}
|
||
*/ |