Avatar billede mosegris.dk Nybegynder
05. december 2006 - 14:27 Der er 7 kommentarer

Problem med javascripmenu i IE 7.0

Hej drenge og piger,

Yes, så er jeg tilbage med (akut) brug for hjælp.

Jeg har et CMS med en menu i "træstruktur". Ved opdateringen til IE 7.0 virker denne menu ikke mere. Er der mulighed for at ændre noget i browseren, som "pisset" vil virke igen???

<script language="JavaScript">
var httpObj = new ActiveXObject("Microsoft.XMLHTTP");

function send(sData,sTarget)
    {
    httpObj.Open("POST", sTarget, true, "", "");
    httpObj.setRequestHeader("Content-Type","text/xml");
    httpObj.Send (sData);
    window.status = "Load in progress | ";
    checkReadyState()
    }

function checkReadyState()
    {
    if (httpObj.readyState == 4)
        {
        AppendChildren(httpObj.ResponseXML);
        window.status = " ";
        }
    else
        {
        AnimateWindowStatus();
        window.setTimeout("checkReadyState()", 50);
        }
    }   
   
function ClkItem()
    {
    idClicked.innerHTML = "&nbsp;&nbsp;<a href='ContentEdit.asp?Editor_ID=1&CMS_ID=" + event.srcElement.getAttribute('ElementID') + "'><strong>" + event.srcElement.getAttribute('ElementText') + "</strong></a>&nbsp;|&nbsp;" + "<a href='ContentAdd.asp?Editor_ID=1&CMS_Parent=" + event.srcElement.getAttribute('ElementID') +"'>Add Sub-Page</a>" + "&nbsp;|&nbsp;" + "<a href='Delete_Content.asp?DeleteID=" + event.srcElement.getAttribute('ElementID') + "'>Delete this Web Page</a>" + "&nbsp;|&nbsp;http://www.comitel.dk/" + "Default.asp?Page=" + event.srcElement.getAttribute('ElementID') + "&nbsp;&nbsp;<a href='http://www.comitel.dk/?Page=" + event.srcElement.getAttribute('ElementID') +"'><img src='images/Preview.gif' width='18' height='18' border='0'></a>" ;
    }
       
function BuildTree()
    {
    if (event.type == 'load')
        {
        if (typeof(divTree0)!='object')
            send("","GetChildren.asp?Level=0");
        }
    else
        {
        try
            {
            objManip = eval('divTree' + event.srcElement.getAttribute('ElementId'));
            if (objManip.style.display == 'none')
                {
                objManip.style.display = '';
                eval("img" + event.srcElement.getAttribute('ElementId') + ".src = 'images/minus.gif';");
                }
            else
                {
                objManip.style.display = 'none';
                eval("img" + event.srcElement.getAttribute('ElementId') + ".src = 'images/plus.gif';");
                }   
            }
        catch (e)
            {
            if(event.srcElement.getAttribute('ElementId')==null)return;
            send("","GetChildren.asp?Level=" + event.srcElement.getAttribute("ElementId"));
            eval("img" + event.srcElement.getAttribute('ElementId') + ".src = 'images/minus.gif';");
            }
        event.cancelBubble = true;
        }
    }

function AppendChildren(oDoc)
    {
    var RowLength = (oDoc.documentElement.selectNodes("Row").length);
    if(RowLength==0) return;

    var intParentID;
    intParentID = oDoc.documentElement.selectNodes("Row")[0].childNodes(1).text;

    var oMain;
    oMain = document.createElement('DIV');
    oMain.id = 'divTree' + intParentID;
    if(intParentID==0)
        oMain.style.cssText = 'position:relative;left:0px;cursor:hand;';
    else
        oMain.style.cssText = 'position:relative;left:25px;cursor:hand;';
    var intID;
    var sText;
    var oTmp;
    for (var iCnt=0;iCnt<RowLength;iCnt++)
        {
        intID = oDoc.documentElement.selectNodes("Row")[iCnt].childNodes(0).text;
        sText = oDoc.documentElement.selectNodes("Row")[iCnt].childNodes(2).text;
        sText2 = oDoc.documentElement.selectNodes("Row")[iCnt].childNodes(3).text;
        sMenuType = oDoc.documentElement.selectNodes("Row")[iCnt].childNodes(4).text;
        oTmp = document.createElement("<DIV onmouseover=\"this.style.color='red';\" onmouseout=\"this.style.color='black';\" OnClick='BuildTree();ClkItem();' OnSelectStart='return false;'>");
        oTmp.id = 'div' + intID;
        if(intParentID==0)
            oTmp.innerHTML = "<IMG width=25 height=1 SRC='images/t_dot.gif'><IMG ElementId='" + intID + "' id='img" + intID + "' SRC='images/plus.gif'>&nbsp;" + sText;
        else
            oTmp.innerHTML = "<IMG  ElementId='" + intID + "' SRC='images/dot.gif'><IMG ElementId='" + intID + "' id='img" + intID + "' SRC='images/plus.gif'>&nbsp;" + sText;
        oTmp.setAttribute('ElementId', intID);
        oTmp.setAttribute('ElementText', sText2);
        oTmp.setAttribute('ElementType', sMenuType);
        oTmp.style.cssText = "cursor:hand;color:darkblue;font-size:x-small;";
        oMain.appendChild(oTmp);
        }
    //alert(oMain.innerHTML);
    if (intParentID=='0')
        tree.appendChild(oMain);
    else
        eval('div' + intParentID).appendChild(oMain);
    //alert(tree.innerHTML);
    }
</script>




Mange hilsner,
Rasmus
Avatar billede olebole Juniormester
05. december 2006 - 15:17 #1
<ole>

Hvad virker ikke - og hvad får du evt. af fejl?

/mvh
</bole>
Avatar billede mosegris.dk Nybegynder
05. december 2006 - 15:26 #2
Hej Ole,

Undskyld mine manglende informationer.

Det, der er galt er, at der simpelt hen ikke bliver vist noget, der hvor menuen/trætrukturen skulle have været. Der er bare blankt. Så derfor faktisk ingen fejlmed.! Den melder ikke engang om scriptfejl...
Avatar billede olebole Juniormester
05. december 2006 - 15:35 #3
Så må du igang med at alert'e forskellige steder i scriptet, så du får en idé om i hvilken linje, det fejler.

Umiddelbart kan jeg dog ikke forstå eval-sætningerne. Såvidt, jeg kan se, dannes der ikke valide adresseringer - men jeg mangler resten af koden for at kunne afgøre det.

I det hele taget ligner det en gang dårlig slamkode, der er klædt ud, somom den skulle ligne Ajax ... det går det dog ikke så godt med  =)
Avatar billede olebole Juniormester
05. december 2006 - 15:36 #4
- og så er der dømt IE-only kode  :o|
Avatar billede olebole Juniormester
05. december 2006 - 15:37 #5
Faktisk er jeg ikke engang sikker på, denne linje virker i IE7:
    var httpObj = new ActiveXObject("Microsoft.XMLHTTP");

IE7 bruger jo XMLHttpRequest-objektet i stedet - ligesom f.eks. FF  ;o)
Avatar billede mosegris.dk Nybegynder
01. januar 2007 - 21:39 #6
Hejsa Olebole,

Undskyld mit sene svar. Jeg købte mig til en løsning, så det nu kører! ;-)

Godt nytår,
Rasmus
Avatar billede mosegris.dk Nybegynder
01. januar 2007 - 21:39 #7
Men drop mig et svar, hvis du vil ha lidt points! ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester