Avatar billede s_raagaard Nybegynder
16. maj 2002 - 23:55 Der er 2 kommentarer og
2 løsninger

Vise lag i en anden frame

Jeg har en frame hvor jeg har et link som dette, som ved mouseover viser et lag i en anden frame:

<a href="#" onmouseover="parent.content.clickMenu('38')">Test</a>


Følgende kode er på siden i den anden frame hvor laget vises:

<script language="JavaScript">
<!--
function clickMenu(menuID) {

  if (menuID=='0') { 
    MM_showHideLayers('document.layers[\'menu0\']','document.all[\'menu0\']','hide','document.layers[\'menu38\']','document.all[\'menu38\']','hide');
  }

  if (menuID=='38') { 
    MM_showHideLayers('document.layers[\'menu0\']','document.all[\'menu0\']','show','document.layers[\'menu38\']','document.all[\'menu38\']','show');
  }

}
function moveLayers() {
  if (navigator.appName == 'Netscape' && document.layers != null) {

      document.layers['menu0'].top=window.pageYOffset;
      document.layers['menu38'].top=window.pageYOffset;

    } else if (document.all != null) { //IE

      document.all['menu0'].style.top=document.body.scrollTop;
      document.all['menu38'].style.top=document.body.scrollTop;}
}

if (navigator.appName == 'Netscape' && document.layers != null) { 
  setInterval("moveLayers()",50);
}

function MM_showHideLayers() { //v2.0
  var i, visStr, args, theObj;
  args = MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) { //with arg triples (objNS,objIE,visStr)
    visStr  = args[i+2];
    if (navigator.appName == 'Netscape' && document.layers != null) {
      theObj = eval(args[i]);
      if (theObj) theObj.visibility = visStr;
    } else if (document.all != null) { //IE
      if (visStr == 'show') visStr = 'visible'; //convert vals
      if (visStr == 'hide') visStr = 'hidden';
      theObj = eval(args[i+1]);
      if (theObj) theObj.style.visibility = visStr;
  } }
}
//-->
</script>


Dette virker fint i IE og Opera MEN IKKE Netscape - er der nogen der kan gennemskue hvad det kan være???


/s
Avatar billede nikolajdu Nybegynder
17. maj 2002 - 09:59 #1
Hvis du vil have noget der virker i NS 6.x, IE 5+ og Opera 5, så skal du bruge den nye DOM og omskrive det din funktion med : document.getElementById

function moveLayers() {
if (document.getElementById && !document.all){
document.getElementById('menu0').top=window.pageYoffset;
document.getElementById('menu38').top=window.pageYoffset;
}else if (navigator.appName == 'Netscape' && document.layers != null) {

      document.layers['menu0'].top=window.pageYOffset;
      document.layers['menu38'].top=window.pageYOffset;

    } else if (document.all != null) { //IE

      document.all['menu0'].style.top=document.body.scrollTop;
      document.all['menu38'].style.top=document.body.scrollTop;}
}

/Nikolaj
Avatar billede s_raagaard Nybegynder
17. maj 2002 - 10:41 #2
Har du et bud på hvordan at denne funktion så skal skrives, der skal vel også ændres noget her således at den kan vise laget....

if (navigator.appName == 'Netscape' && document.layers != null) { 
  setInterval("moveLayers()",50);
}

function MM_showHideLayers() { //v2.0
  var i, visStr, args, theObj;
  args = MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) { //with arg triples (objNS,objIE,visStr)
    visStr  = args[i+2];
    if (navigator.appName == 'Netscape' && document.layers != null) {
      theObj = eval(args[i]);
      if (theObj) theObj.visibility = visStr;
    } else if (document.all != null) { //IE
      if (visStr == 'show') visStr = 'visible'; //convert vals
      if (visStr == 'hide') visStr = 'hidden';
      theObj = eval(args[i+1]);
      if (theObj) theObj.style.visibility = visStr;
  } }
}


/s
Avatar billede kolzie Nybegynder
17. maj 2002 - 21:01 #3
Den her virker hos mig.

<!--
var ns, ns6, ie;

ns = (document.layers) ? true : false;
ns6 = (document.getElementById) ? true : false;
ie = (document.all) ? true : false;

function showLayer( layer ){
if( ns ){
document.layers[layer].visibility = "show";
} else if( ie ){
document.all[ layer ].style.visibility = "visible";
} else if( ns6 ){
document.getElementById(layer).style.visibility = "visible";
}
}

function hideLayer( layer ){
if( ns ){
document.layers[layer].visibility = "hidden";
} else if( ie ){
document.all[ layer ].style.visibility = "hidden";
} else if( ns6 ){
document.getElementById(layer).style.visibility = "hidden";
}
}

//-->

(og så selvfølgelig en style, hvor jeg angiver positionerne)
Avatar billede nikolajdu Nybegynder
09. januar 2003 - 05:14 #4
ehe lukke???
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