一段js的代码,奈何对js不熟,这段代码用ie没问题,别的浏览器就通通完蛋,不知道怎么弄成兼容的。这么直接的求助不会被版主禁言吧?实在是对js不熟悉呀。var menuOffX=0 //菜单距连接文字最左端距离
var menuOffY=16 //菜单距连接文字顶端距离var fo_shadows=new Array()
var linkset=new Array()////No need to edit beyond herevar ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1
var ns6=document.getElementById&&!document.all
var ns4=document.layersfunction showmenu(e,vmenu,mod){
if (!document.all&&!document.getElementById&&!document.layers)
return
which=vmenu
clearhidemenu()
ie_clearshadow()
menuobj=ie4? document.all.popmenu : ns6? document.getElementById("popmenu") : ns4? document.popmenu : ""
menuobj.thestyle=(ie4||ns6)? menuobj.style : menuobj

if (ie4||ns6)
menuobj.innerHTML=which
else{
menuobj.document.write('<layer name=gui bgColor=#E6E6E6 width=165 onmouseover="clearhidemenu()" onmouseout="hidemenu()">'+which+'</layer>')
menuobj.document.close()
}
menuobj.contentwidth=(ie4||ns6)? menuobj.offsetWidth : menuobj.document.gui.document.width
menuobj.contentheight=(ie4||ns6)? menuobj.offsetHeight : menuobj.document.gui.document.height

eventX=ie4? event.clientX : ns6? e.clientX : e.x
eventY=ie4? event.clientY : ns6? e.clientY : e.y

var rightedge=ie4? document.body.clientWidth-eventX : window.innerWidth-eventX
var bottomedge=ie4? document.body.clientHeight-eventY : window.innerHeight-eventY
if (rightedge<menuobj.contentwidth)
menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX-menuobj.contentwidth+menuOffX : ns6? window.pageXOffset+eventX-menuobj.contentwidth : eventX-menuobj.contentwidth
else
menuobj.thestyle.left=ie4? ie_x(event.srcElement)+menuOffX : ns6? window.pageXOffset+eventX : eventX

if (bottomedge<menuobj.contentheight&&mod!=0)
menuobj.thestyle.top=ie4? document.body.scrollTop+eventY-menuobj.contentheight-event.offsetY+menuOffY-23 : ns6? window.pageYOffset+eventY-menuobj.contentheight-10 : eventY-menuobj.contentheight
else
menuobj.thestyle.top=ie4? ie_y(event.srcElement)+menuOffY : ns6? window.pageYOffset+eventY+10 : eventY
menuobj.thestyle.visibility="visible"
ie_dropshadow(menuobj,"#aaaaaa",3)
return false
}function ie_y(e){  
var t=e.offsetTop;  
while(e=e.offsetParent){  
t+=e.offsetTop;  
}  
return t;  
}  
function ie_x(e){  
var l=e.offsetLeft;  
while(e=e.offsetParent){  
l+=e.offsetLeft;  
}  
return l;  
}  
function ie_dropshadow(el, color, size)
{
var i;
for (i=size; i>0; i--)
{
var rect = document.createElement('div');
var rs = rect.style
rs.position = 'absolute';
rs.left = (el.style.posLeft + i) + 'px';
rs.top = (el.style.posTop + i) + 'px';
rs.width = el.offsetWidth + 'px';
rs.height = el.offsetHeight + 'px';
rs.zIndex = el.style.zIndex - i;
rs.backgroundColor = color;
var opacity = 1 - i / (i + 1);
rs.filter = 'alpha(opacity=' + (100 * opacity) + ')';
//el.insertAdjacentElement('afterEnd', rect);
fo_shadows[fo_shadows.length] = rect;
}
}
function ie_clearshadow()
{
for(var i=0;i<fo_shadows.length;i++)
{
if (fo_shadows[i])
fo_shadows[i].style.display="none"
}
fo_shadows=new Array();
}
function contains_ns6(a, b) {
while (b.parentNode)
if ((b = b.parentNode) == a)
return true;
return false;
}function hidemenu(){
if (window.menuobj)
menuobj.thestyle.visibility=(ie4||ns6)? "hidden" : "hide"
ie_clearshadow()
}function dynamichide(e){
if (ie4&&!menuobj.contains(e.toElement))
hidemenu()
else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
hidemenu()
}function delayhidemenu(){
if (ie4||ns6||ns4)
delayhide=setTimeout("hidemenu()",500)
}function clearhidemenu(){
if (window.delayhide)
clearTimeout(delayhide)
}function highlightmenu(e,state){
if (document.all)
source_el=event.srcElement
else if (document.getElementById)
source_el=e.target
if (source_el.className=="menuitems"){
source_el.id=(state=="on")? "mouseoverstyle" : ""
}
else{
while(source_el.id!="popmenu"){
source_el=document.getElementById? source_el.parentNode : source_el.parentElement
if (source_el.className=="menuitems"){
source_el.id=(state=="on")? "mouseoverstyle" : ""
}
}
}
}if (ie4||ns6)
document.onclick=hidemenuvar rate = 20;
var obj;
var act = 0;
var elmH = 0;
var elmS = 128;
var elmV = 255;
var clrOrg;
var TimerID;
if (navigator.appName.indexOf("Microsoft",0) != -1 && parseInt(navigator.appVersion) >= 4) {
Browser = true;
} else {
Browser = false;
}
if (Browser) {
document.onmouseover = doRainbowAnchor;
document.onmouseout = stopRainbowAnchor;
}function doRainbow()
{
if (Browser && act != 1) {
act = 1;
obj = event.srcElement;
clrOrg = obj.style.color;
TimerID = setInterval("ChangeColor()",100);
}
}
function stopRainbow()
{
if (Browser && act != 0) {
obj.style.color = clrOrg;
clearInterval(TimerID);
act = 0;
}
}
function doRainbowAnchor()
{
if (Browser && act != 1) {
obj = event.srcElement;
while (obj.tagName != 'A' && obj.tagName != 'BODY') {
obj = obj.parentElement;
if (obj.tagName == 'A' || obj.tagName == 'BODY')
break;
}
if (obj.tagName == 'A' && obj.href != '') {
act = 1;
clrOrg = obj.style.color;
TimerID = setInterval("ChangeColor()",100);
}
}
}function stopRainbowAnchor()
{
if (Browser && act != 0) {
if (obj.tagName == 'A') {
obj.style.color = clrOrg;
clearInterval(TimerID);
act = 0;
}
}
}function ChangeColor()
{
obj.style.color = makeColor();
}function makeColor()
{
if (elmS == 0) {
elmR = elmV; elmG = elmV; elmB = elmV;
}
else {
t1 = elmV;
t2 = (255 - elmS) * elmV / 255;
t3 = elmH % 60;
t3 = (t1 - t2) * t3 / 60;
if (elmH < 60) {
elmR = t1; elmB = t2; elmG = t2 + t3;
}
else if (elmH < 120) {
elmG = t1; elmB = t2; elmR = t1 - t3;
}
else if (elmH < 180) {
elmG = t1; elmR = t2; elmB = t2 + t3;
}
else if (elmH < 240) {
elmB = t1; elmR = t2; elmG = t1 - t3;
}
else if (elmH < 300) {
elmB = t1; elmG = t2; elmR = t2 + t3;
}
else if (elmH < 360) {
elmR = t1; elmG = t2; elmB = t1 - t3;
}
else {
elmR = 0; elmG = 0; elmB = 0;
}
}
elmR = Math.floor(elmR);
elmG = Math.floor(elmG);
elmB = Math.floor(elmB);
clrRGB = '#' + elmR.toString(16) + elmG.toString(16) + elmB.toString(16);
elmH = elmH + rate;
if (elmH >= 360)
elmH = 0;
return clrRGB;
}function checkip(ip){
if ((ip.length <7)||(ip.length>15))
{
return false;
}else{
ip = ip.toLowerCase();
var pattern = /^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})$/;
flag = pattern.test(ip);
if(flag)
{
return true;
}
else
{
return false;
}
}
}function fullip(ip){
started = 0;
ended = 0;
fullip = "";
ip = ip.toLowerCase();
if (checkip(ip))
{
tmpip = ip.split(".");
for (i = 0 ;i < tmpip.length ;i++ )
{
if (tmpip[i].length == 1)
fullip = fullip + "00" + tmpip[i] + ".";
else if (tmpip[i].length == 2)
fullip = fullip + "0" + tmpip[i] + ".";
else
fullip = fullip + tmpip[i] + ".";
}
fullip = fullip.substring(0,15);
return fullip;
}else{
return "";
}
}function checkmac(mac){
mac = mac.toLowerCase();
flag = false;
if (mac.length==12)
{
var pattern = /^[0-9a-f]{12}$/;
flag = pattern.test(mac);
}else if(mac.length==17)
{
var pattern = /^([0-9a-f]{2}[-:-:]{1}){5}[0-9a-f]{2}$/;
flag = pattern.test(mac);
}
if(flag)
{
return true;
}
else
{
return false;
}
}function fullmac(mac){
mac = mac.toLowerCase();
fullmac = "";
if (checkmac(mac))
{
if (mac.length==12){
for(i=0;i<mac.length;i=i+2)
{
if (fullmac=="")
{
fullmac=mac.substring(i,i+2);
}else{
fullmac=fullmac+"-"+mac.substring(i,i+2);
}
}
mac = fullmac;
}
fullmac = mac;
for(i=0;i<fullmac.length;i++)
{
tmpch=fullmac.charAt(i);
if ((tmpch==":")||(tmpch=="-")||(tmpch==":"))
{
fullmac=fullmac.substring(0,i)+"-"+fullmac.substring(i+1,fullmac.length);
}
}
return fullmac;
}else
{
return "";
}
}Firefox兼容

解决方案 »

  1.   

    接着:function checkeddate(date){
    var pattern = /^[0-9]{2,4}[-\/-]{1}[0-9]{1,2}[-\/-]{1}[0-9]{1,2}$/;
    flag = pattern.test(date);
    if(flag)
    {
    return true;
    }else
    {
    return false;
    }
    }function fulldate(date){
    fulldate = "";
    if (checkeddate(date)){
    for(i=0;i<date.length;i++)
    {
    tmpch=date.charAt(i);
    if ((tmpch=="/")||(tmpch=="-"))
    {
    date=date.substring(0,i)+"-"+date.substring(i+1,date.length);
    }
    }
    tmpdate = date.split("-");
    if (tmpdate[0].length == 2)
    {
    tmpdate[0] = "20" + tmpdate[0];
    }
    if (tmpdate[1].length == 1)
    {
    tmpdate[1] = "0" + tmpdate[1];
    }
    if (tmpdate[2].length == 1)
    {
    tmpdate[2] = "0" + tmpdate[2];
    }
    fulldate = tmpdate[0] + "-" + tmpdate[1] + "-" + tmpdate[2];
    return fulldate;
    }else{
    return "";
    }
    }function checktime(time){
    var pattern = /^[0-9]{1,2}[::][0-9]{1,2}[::][0-9]{1,2}$/;
    flag = pattern.test(time);
    if(flag)
    {
    return true;
    }else
    {
    return false;
    }
    }function fulltime(time){
    fulltime = "";
    if (checktime(time)){
    for(i=0;i<time.length;i++)
    {
    tmpch=time.charAt(i);
    if ((tmpch=="-")||(tmpch==":"))
    {
    time=time.substring(0,i)+":"+time.substring(i+1,time.length);
    }
    }
    tmptime = time.split(":");
    if (tmptime[0].length == 1)
    {
    tmptime[0] = "0" + tmptime[1];
    }
    if (tmptime[1].length == 1)
    {
    tmptime[1] = "0" + tmptime[1];
    }
    if (tmptime[2].length == 1)
    {
    tmptime[2] = "0" + tmptime[2];
    }
    fulltime = tmptime[0] + ":" + tmptime[1] + ":" + tmptime[2];
    return fulltime;
    }else{
    return "";
    }
    }function checkdatetime(datetime){
    tmpdatetime = datetime.split(" ");
    if (tmpdatetime.length == 2)
    {
    if (checkeddate(tmpdatetime[0]) && checktime(tmpdatetime[1]) )
    {
    return true;
    }else{
    return false;
    }
    }else{
    return false;
    }
    }function fulldatetime(datetime){
    fulldatetime = "";
    if (checkdatetime(datetime))
    {
    tmpdatetime = datetime.split(" ");
    fulldatetime = fulldate(tmpdatetime[0]) + " " + fulltime(tmpdatetime[1]);
    return fulldatetime;
    }else{
    return "";
    }
    }function isNum(str){
    var pattern = /^[-]{0,1}[0-9]{1,}$/;
    flag = pattern.test(str);
    if(flag)
    {
    return true;
    }else
    {
    return false;
    }
    }function isInt(str){
    var pattern = /^[0-9]{1,}$/;
    flag = pattern.test(str);
    if(flag)
    {
    return true;
    }else
    {
    return false;
    }
    }function isFloat(str){
    var pattern = /^[-]{0,1}[0-9]{1,}[.]{0,1}[0-9]{0,2}$/;
    flag = pattern.test(str);
    if(flag)
    {
    return true;
    }else
    {
    return false;
    }
    }function checkuserid(str){
    str = str.toLowerCase();
    var pattern = /^[0-9a-z]{1}[0-9a-z_]{2,14}$/;
    flag = pattern.test(str);
    if(flag)
    {
    return true;
    }else
    {
    return false;
    }
    }function checkphone(str){
    var pattern = /^[0-9]{0,4}[\-]{0,1}[0-9]{4,10}[\-]{0,1}[0-9]{1,8}$/;
    flag = pattern.test(str);
    if(flag)
    {
    return true;
    }else
    {
    return false;
    }
    }function checkpwd(str){
    str = str.toLowerCase();
    var pattern = /^[0-9a-f]{32}$/;
    flag = pattern.test(str);
    if(flag)
    {
    return true;
    }else
    {
    return false;
    }
    }function checklen(str,mincnt,maxcnt){
    if ((str.length < mincnt)||(str.length >maxcnt))
    {
    return false;
    }else{
    return true;
    }
    }function replace(str,older,newer){
    str = str.replace(older,newer);
    while (str!=  str.replace(older,newer)){
    str = str.replace(older,newer);
    }
    return str;
    }function isNull(str){
    if (str.length > 0)
    {
    return false;
    }else{
    return true;
    }
    }function checksn(str){
    return true;
    }
      

  2.   

    var ie4现在都IE10了 还判断 IE4.代码太多,没时间看。楼主可以重新去找新一点的代码。这 判断 IE4 的代码。估计有几十年了。