---
title: "Mera crossbrowser?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/72137-mera-crossbrowser"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Jesper T"
published: "2003-03-25T15:55:07.000Z"
updated: "2003-03-27T19:57:16.000Z"
replies: 18
views: 335
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/72137-mera-crossbrowser"
---

# Mera crossbrowser?

## #1 — Jesper T, 2003-03-25T15:55Z

Skulle behöva göra detta script mer crossbrowserkompatibelt om det går.

```
function folder_ondblclick(element) {
    var oUL = element.all.tags("UL")[0];
    if (element.className == "folder_closed")
        element.className =  "folder_open";
    else
        element.className = "folder_closed";

    if (oUL != null) {
        if (oUL.style.display == "none")
            oUL.style.display = "";
        else
            oUL.style.display = "none";
    }
    window.event.cancelBubble = true;
}
```

Permalänk: https://www.webforum.nu/p/72137

## #2 — Peter S, 2003-03-25T17:10Z

Redigerad.

 :)

Permalänk: https://www.webforum.nu/p/990608

## #3 — Jesper T, 2003-03-25T23:04Z

Åhhh, tack!

> **Peter S skrev:**
>
> Sätt ett id på "ul"-elementet

På alla ul-element?

> Skicka sedan in *event* som det andra argumentet till funktionen.

Hur gör jag det?

Kör funktionen med detta:
ondblclick=folder_ondblclick(this,event)
Men det smäller här i javascriptet:
"style.display" är Null eller inte ett object
if (oUL.style.display == "none")

Permalänk: https://www.webforum.nu/p/990881

## #4 — Peter S, 2003-03-26T13:32Z

Redigerad.

 :)

Permalänk: https://www.webforum.nu/p/991188

## #5 — Jesper T, 2003-03-26T15:52Z

Smäller här nu:  e.cancelBubble = true;
"undefined" är Null eller inte ett object 

Använder din ändring och det första \<ul\> har id:t "foo":

\<ul id="foo"\>

Permalänk: https://www.webforum.nu/p/991318

## #6 — Peter S, 2003-03-26T16:04Z

Skickar du in *event* som det andra argumentet? Hur anropar du funktionen?

 :)

Permalänk: https://www.webforum.nu/p/991331

## #7 — Jesper T, 2003-03-26T16:24Z

Så här: folder_ondblclick(this)

Om jag skriver folder_ondblclick(this,event)
Så blir sidan tom och det kommer inget felmeddelande.

Permalänk: https://www.webforum.nu/p/991348

## #8 — Peter S, 2003-03-26T16:31Z

Kan du posta all kod?

 :)

Permalänk: https://www.webforum.nu/p/991356

## #9 — Jesper T, 2003-03-26T16:39Z

```
<script type="text/javascript" language="javascript">
<!--
function folder_ondblclick(element, e) {
    var oUL = ( document.all ) ? document.all[ "foo" ] : ( document.getElementById ) ? document.getElementById( "foo" ) : null;
    if( oUL ){
      if (element.className == "folder_closed")
          element.className =  "folder_open";
      else
          element.className = "folder_closed";

      if (oUL != null) {
          if (oUL.style.display == "none")
              oUL.style.display = "";
          else
              oUL.style.display = "none";
      }
    }
    if( window.event )
       e.cancelBubble = true;
    else if( e.stopPropagation )
       e.stopPropagation();
} 
//-->
</script>

<UL id=foo>
<LI class=folder_closed ondblclick=folder_ondblclick(this,event)>docs
<UL style=display:none;>
<LI class=folder_closed ondblclick=folder_ondblclick(this,event)>abc
<UL style=display:none;>
<LI class=file><img src=imgs/ico_all.gif width=20 height=17>aaa</LI>
</UL></LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this,event)>berit
<UL style=display:none;>
<LI class=folder_closed ondblclick=folder_ondblclick(this,event)>Submeny</LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this,event)>Submeny2
<UL style=display:none;>
<LI class=file><img src=imgs/ico_web.gif width=20 height=17>Test</LI></UL></LI>
<LI class=file><img src=imgs/ico_img.gif width=20 height=17>bild</LI>
</UL></LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this,event)>cba
<UL style=display:none;>
<LI class=file><img src=imgs/ico_web.gif width=20 height=17>test</LI>
</UL></LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this,event)>Elin
<UL style=display:none;>
<LI class=file><img src=imgs/ico_doc.gif width=20 height=17>Elin</LI>
<LI class=file><img src=imgs/ico_code.gif width=20 height=17>jeppe</LI></UL></LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this,event)>Jesper</LI>
<LI class=file><img src=imgs/ico_web.gif width=20 height=17>test</LI>
</UL></LI></UL>
```

Permalänk: https://www.webforum.nu/p/991367

## #10 — Peter S, 2003-03-26T16:52Z

Det är väl klart att sidan blir tom eftersom koden säger att synligheten för elementet med id *foo* skall bli "none" vid ett dubbelklick.  ;) 

 :)

Permalänk: https://www.webforum.nu/p/991381

## #11 — Jesper T, 2003-03-26T16:55Z

Du sa ju att jag skulle sätta id=foo på första ul-elementet.
Hur skall jag göra då? 

Sätter jag id="foo" på de andra ullarna så får jag error.

Permalänk: https://www.webforum.nu/p/991387

## #12 — Peter S, 2003-03-26T18:18Z

Redigerad.

 :)

Permalänk: https://www.webforum.nu/p/991469

## #13 — Jesper T, 2003-03-26T18:30Z

fel, fel, fel :P  ;) 

Det funkade finfint i I.E. 6 förut.

Här kommer hela den koden:

```
<script>
function folder_ondblclick(element) {
    var oUL = element.all.tags("UL")[0];
    if (element.className == "folder_closed")
        element.className =  "folder_open";
    else
        element.className = "folder_closed";

    if (oUL != null) {
        if (oUL.style.display == "none")
            oUL.style.display = "";
        else
            oUL.style.display = "none";
    }
    window.event.cancelBubble = true;
} 
</script>

<UL id=foo>
<LI class=folder_closed ondblclick=folder_ondblclick(this)>docs
<UL style=display:none;>
<LI class=folder_closed ondblclick=folder_ondblclick(this)>abc
<UL style=display:none;>
<LI class=file><img src=imgs/ico_all.gif width=20 height=17>aaa</LI>
</UL></LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this)>berit
<UL style=display:none;>
<LI class=folder_closed ondblclick=folder_ondblclick(this)>Submeny</LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this)>Submeny2
<UL style=display:none;>
<LI class=file><img src=imgs/ico_web.gif width=20 height=17>Test</LI></UL></LI>
<LI class=file><img src=imgs/ico_img.gif width=20 height=17>bild</LI>
</UL></LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this)>cba
<UL style=display:none;>
<LI class=file><img src=imgs/ico_web.gif width=20 height=17>test</LI>
</UL></LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this)>Elin
<UL style=display:none;>
<LI class=file><img src=imgs/ico_doc.gif width=20 height=17>Elin</LI>
<LI class=file><img src=imgs/ico_code.gif width=20 height=17>jeppe</LI></UL></LI>
<LI class=folder_closed ondblclick=folder_ondblclick(this)>Jesper</LI>
<LI class=file><img src=imgs/ico_web.gif width=20 height=17>test</LI>
</UL></LI></UL>
```

Permalänk: https://www.webforum.nu/p/991479

## #14 — Peter S, 2003-03-26T18:59Z

Ahh, sorry. Jag läste fel i din första kod  :r 
Så här blir det:

```
<script>
function folder_ondblclick(element, e) {
    var oUL = ( document.all ) ? element.all.tags( "ul" )[ 0 ] : ( document.getElementsByTagName ) ? element.getElementsByTagName( "ul" )[ 0 ] : null;
    if( oUL ){
       if (element.className == "folder_closed")
           element.className =  "folder_open";
       else
           element.className = "folder_closed";

       if (oUL != null) {
           if (oUL.style.display == "none")
               oUL.style.display = "";
           else
               oUL.style.display = "none";
       }
   }
   if( window.event )
       e.cancelBubble = true;
   else if( e.stopPropagation )
       e.stopPropagation();
} 
</script>
```

Skicka sedan in *event* som andra argument vid funktionsanropet  :bire 

 :)

Permalänk: https://www.webforum.nu/p/991497

## #15 — Jesper T, 2003-03-26T19:09Z

Woooo! Tack, funkar finfint.
I vilka browsrar tror du?

Permalänk: https://www.webforum.nu/p/991508

## #16 — Peter S, 2003-03-26T19:14Z

MSIE 5-6, Netscape 6-7, Mozilla och Opera 7 skulle jag tro att detta fungerar i.

 :)

Permalänk: https://www.webforum.nu/p/991513

## #17 — Jesper T, 2003-03-27T18:24Z

Med risk för att bli tjatig.
Finns det något sätt att öppna vissa foldrar i "body onload"?

Permalänk: https://www.webforum.nu/p/992314

## #18 — Peter S, 2003-03-27T19:31Z

Självklart. Det enklaste är väl dock att ta bort *style=display:none;* från de "ul"-element du vill skall synas då sidan laddats klart? Annars kan du sätta ett id på det/de "ul"-element du vill skall synas och lägga till följande:

```
window.onload = function(){
	var elm = ( document.all ) ? document.all[ "foo" ] : ( document.getElementById ) ? document.getElementById( "foo" ) : null;

	elm.style.display = "";
};
```

 :)

Permalänk: https://www.webforum.nu/p/992347

## #19 — Jesper T, 2003-03-27T19:57Z

Mycket tack. (Det blir nog att plocka bort "display:none" det verkar lättast ;))

Permalänk: https://www.webforum.nu/p/992362

---

Tråden på webben: https://www.webforum.nu/amne/javascript/72137-mera-crossbrowser
