/** * 外链确认跳转 * @param event 触发事件Event对象 * @param outerURL 外链地址 * @param {Array} settings.domainUrl 当前站点域名(eg:['192.168.0.1']) * @param {String} settings.domainName 当前站点名,默认为domainUrl值(eg:武汉佳软) * @param {Number} settings.domainType 调用的dom元素类型,a或select,0代表元素类型为a,1代表元素类型为select 默认值为0(note:a与map的子标签area类型都为a) * @param {String} settings.authName 需要验证的站点名 * @param {String} settings.authUrl 需要验证的地址 * @param {String} settings.authPassword 需要验证的地址的密码(MD5加密后密码) * * eg:checkDomain(event,this.href,{domainUrl:['192.168.1.25','192.168.1.26'],domainName:'武汉佳软'}) * eg:checkDomain(event,this.href,{domainUrl:['192.168.1.25','192.168.1.26'],domainName:'武汉佳软',domainType:0}); * eg:checkDomain(event,this.href,{domainUrl:['192.168.1.25','192.168.1.26'],domainName:'武汉佳软',domainType:1}); * eg:checkDomain(event,this.href,{domainUrl:['192.168.1.25','192.168.1.26'],domainName:'武汉佳软',domainType:1,authName:'湖北政府',authUrl:'htt://www.baidu.com',authPassword:'123456'}); */ function checkDomain(event, outerURL, settings) { if (!arguments[0]) { alert( "传入的参数格式有误!" ); return ; } if (!arguments[1]) { // alert("传入的参数格式有误!"); return ; } var defaultSetting = { domainUrl: [window.location.host], domainName: window.location.host, domainType: 0, authName: '' , authUrl: '' , authPassword: '' , } var extendSetting = $.extend(defaultSetting, settings); // 判断是否是完整的链接 if (/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/.test(outerURL)) { // 链接的地址不为空也不为javascript: if ( typeof (outerURL) !== "undefined" && outerURL !== "" && outerURL.toLowerCase().indexOf( "javascript:" ) == -1) { // 循环配置的域名,判断当前的链接是否存在在配置的域名中 var domainUrlFlag = false ; for ( var item in extendSetting.domainUrl) { if (outerURL.toLowerCase().indexOf(extendSetting.domainUrl[item]) == -1) { domainUrlFlag = false ; } else { domainUrlFlag = true ; break ; } } if (!domainUrlFlag) { // 当前的链接不存在在配置的域名中,弹出询问框 //阻止默认事件 if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false ; } if ($( "#bootstrapModelElement" ).length === 0) { //判断model dom是否存在,存在,直接显示;不存在,创建后再显示 if (extendSetting.authUrl && outerURL.indexOf(extendSetting.authUrl) !== -1) { var bootstrapModelElement = '<div id="bootstrapModelElement" class="modal hide fade" tabIndex="-1" role="dialog" aria-hidden="true">' + '<div class="modal-header">' + '<button type="button" class="bootstrap-close" data-dismiss="modal" aria-hidden="true">× </button>' + '<h3> </h3>' + '</div>' + '<div class="modal-body">' + '<p>您访问的链接即将离开"' + extendSetting.domainName + '"门户网站,进入"' + extendSetting.authName + '"网站,输入密码后 <input id="bootstrapModelPassword" style="width: 80px;margin-bottom: 0;" type="password"/> 继续?</p>' + '<p id="bootstrapModelPasswordTip" style="color: red;"></p>' + '</div>' + '<div class="modal-footer">' + '<button onclick="handleCancleBoostrapModelPassword()" class="bootstrap-btn bootstrap-btn-default">放弃</button> ' + '<button onclick="handleCheckBoostrapModelPassword(\'' + outerURL + '\',\'' + extendSetting.authPassword + '\')" class="bootstrap-btn bootstrap-btn-danger">继续访问</button>' + '</div>' + '</div>' ; } else { var bootstrapModelElement = '<div id="bootstrapModelElement" class="modal hide fade" tabIndex="-1" role="dialog" aria-hidden="true">' + '<div class="modal-header">' + '<button type="button" class="bootstrap-close" data-dismiss="modal" aria-hidden="true">× </button>' + '<h3> </h3>' + '</div>' + '<div class="modal-body">' + '<p>您访问的链接即将离开"' + extendSetting.domainName + '"门户网站,是否继续?</p>' + '</div>' + '<div class="modal-footer">' + '<button class="bootstrap-btn bootstrap-btn-default" data-dismiss="modal" aria-hidden="true">放弃</button> ' + '<button onclick="javasript:window.open(\'' + outerURL + '\'); $(\'#bootstrapModelElement\').modal(\'hide\');" class="bootstrap-btn bootstrap-btn-danger">继续访问</button>' + '</div>' + '</div>' ; } $( "body" ).append(bootstrapModelElement); } $( "#bootstrapModelElement" ).modal( 'show' ); } else { //当前的链接存在在配置的域名中,直接跳转 if (1 === parseInt(extendSetting.domainType)) { //调用的dom元素类型为select时,在新窗口打开页面 window.open(outerURL); } // else 调用的dom元素类型为a和map时,在新窗口打开页面 } } } } // 检验密码 function handleCheckBoostrapModelPassword(outerURL, authPassword) { var bootstrapModelPassword = $( '#bootstrapModelPassword' ).val(); bootstrapModelPassword = md5(bootstrapModelPassword); if (bootstrapModelPassword === authPassword) { window.open(outerURL); $( '#bootstrapModelElement' ).modal( 'hide' ); $( "#bootstrapModelPasswordTip" ).text( "" ); $( "#bootstrapModelPassword" ).val( "" ); } else { $( "#bootstrapModelPasswordTip" ).text( "输入的密码有误!" ) } } // 放弃跳转 function handleCancleBoostrapModelPassword() { $( '#bootstrapModelElement' ).modal( 'hide' ); $( "#bootstrapModelPasswordTip" ).text( "" ); $( "#bootstrapModelPassword" ).val( "" ); } |