如何为Internet Explorer以外的浏览器提供以下可移植代码?

时间:2010-12-27 19:26:35

标签: activexobject domparser xmldom

我有一个在Internet Explorer上运行良好的源代码,但无法在Chrome或Firefox上运行。我想让它变得便携。请帮助。

<html> 
  <head>
   <title>Login</title>

   <script language="javascript">

    function valUser(){

    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.onreadystatechange = functory;
        xmlDoc.load("normal.xml");

    }

    function functory(){
        var u = document.forms[0].user.value;
        var p = document.forms[0].pwd.value;        

        if(xmlDoc.readyState == 4){

            xmlObj = xmlDoc.documentElement;
            var len = xmlObj.childNodes.length;

            for(i = 0; i < len; i++)
            {    
                var nodeElement = xmlObj.childNodes[i];
                var ux = nodeElement.childNodes[0].firstChild.nodeValue;
                var mx = nodeElement.childNodes[1].firstChild.nodeValue;
                var ex = nodeElement.childNodes[2].firstChild.nodeValue;
                var px = nodeElement.childNodes[3].firstChild.nodeValue;

                if((ux == u)&&(px == p)){
                userDetails(ux,mx,ex)
                }
                else {
                var divInvalid = document.getElementById('invalid');
                divInvalid.innerHTML = "<b>Invalid Username or password</b>";
                }
            }
        }

    }

function userDetails(u,m,e){
var newWindow = window.open("", "_self", "height=250,width=250,toolbar=yes,scrollbar=yes,status=yes");
var content = "<html><head><title>Intro</title></head><h1 align='center'><font face='Lucida Handwriting' color='red'>Welcome To GlenMark Pharma</h1></font>";
content += "<body>";
content += "<table align='center'border='1'><tr><th>ENAME</th><th>Mobile</th><th>Email</th></tr>";
content += "<tr><td>"+u+"</td><td>"+m+"</td><td>"+e+"</td></tr></table>";
content += "<div style='postion:absolute;top:10px;right:5px'><a href='logout.html'>LOgout</a></div>";
content += "</body></html>";

newWindow.document.write(content);
newWindow.blur();
}


   </script>
  </head>

  <body >  
   <div style="position:absolute;left:0px;top:0px;">
    <img src="login.jpg" height="650"></img>      

   <div style="font-family:Monotype Corsiva;position:absolute;left:640px;top:250px;"><h1><font color="0066FF">Employee Login</font></h1></div>
   </div>


  <form method="post" action="ret.html" name="frmGlenMark">

   <div style="position:absolute;left:640px;top:325px">
    <input type="text" name="user" size="25">
   </div>

   <div style="position:absolute;left:640px;top:355px">
    <input type="password" name="pwd" size="25">
   </div>

   <div style="position:absolute;left:640px;top:385px">
    <input type="Button" value="Login" onClick="valUser()">
   </div>


   <div id="invalid" style="position:absolute;left:640px;top:410px"></div>

<!--
   <div style="position:absolute;left:705px;top:385px">
    <input type="reset" name="Reset">
   </div>
-->


  </form>
  </body>

</html>

未捕获的ReferenceError:未定义ActiveXObject - &GT;这是我得到的错误。

我已尝试以下方法使其可移植,但我仍然遇到错误。 像:

function valUser(){

    if(window.XMLHttpRequest)
    {
        xhttp = new XMLHttpRequest();

    }
    else
    {
          xhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

        xhttp.open("GET","normal.xml",false);
        xhttp.send();
        xmlDoc=xhttp.responseXML;
        onreadystatechange = functory;

    }

未捕获的TypeError:无法将DOM对象构造函数作为函数调用。

1 个答案:

答案 0 :(得分:0)

function loadXMLDocErr(dname)
{
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async=false;
  xmlDoc.load(dname); 

  if (xmlDoc.parseError.errorCode != 0)
    {
    alert("Error in line " + xmlDoc.parseError.line +
    " position " + xmlDoc.parseError.linePos +
    "\nError Code: " + xmlDoc.parseError.errorCode +
    "\nError Reason: " + xmlDoc.parseError.reason +
    "Error Line: " + xmlDoc.parseError.srcText);
    return(null);
    }
  }
catch(e)
  {
  try //Firefox
    {
    xmlDoc=document.implementation.createDocument("","",null);
    xmlDoc.async=false;
    xmlDoc.load(dname);
    if (xmlDoc.documentElement.nodeName=="parsererror")
      {
      alert(xmlDoc.documentElement.childNodes[0].nodeValue);
      return(null);
      }
    }
  catch(e) {alert(e.message)}
  }
try
  {
  return(xmlDoc);
  }
catch(e) {alert(e.message)}
return(null);
}