Avatar billede jytte Nybegynder
23. november 2000 - 10:14 Der er 12 kommentarer og
1 løsning

Få en flash 4 til at virke i netscape 4.5

Jeg har et browservindue der er delt i en venstre-frame og en højre-frame. I venstre frame har jeg placeret et flash med 4 menu-indgange. Ved klik på de enkelte menuer kalder jeg en stump javascript som får højre-frame til at skifte sin flash-fil ud med en anden. Dette virker fint i explorer 5, men desværre ikke i netscape.
Mit javascript i venstre frame ser således ud:

var InternetExplorer = navigator.appName.indexOf(\"Microsoft\") != -1;

function f(filNavn, emne)
{   
  var anim = InternetExplorer ? eval(\'parent.frame_02.\' + Animation) :parent.frame_02.document.embeds[0];
  anim.StopPlay();
    if ( emne==\"side0\" ) {
      filNavn=\"T1000000.swf\";
      anim.movie = filNavn;
      anim.StopPlay();
    }
    else  {
      anim.movie = filNavn+\".swf\";
      anim.Play();
    }     
}
og action bag én af knapperne ser f.eks således ud:

function f(filNavn, emne)
{   
  var anim = InternetExplorer ? eval(\'parent.frame_02.\' + Animation) :parent.frame_02.document.embeds[0];
On(Release)
...
Get URL (\"java script:
f(\"flashnavnderskalsættesindivenstreframe\",
  \"side2\")\")
End On

I Netscape ser det ud som om anim.Play() er virkningsløs -- jeg håber der er nogen der har nogle gode forslag ...
Avatar billede jytte Nybegynder
23. november 2000 - 10:18 #1
hovsa : jeg fik pastet de tre første linier ind to gange, så I bedes ignorerer linierne anden gang de forekommer :-)

Avatar billede nikolajdu Nybegynder
23. november 2000 - 10:24 #2
Avatar billede jytte Nybegynder
23. november 2000 - 10:48 #3
Ja jeg har sat swLiveConnect=\"true\" i mit embed-tag.

Og det handler ikke om hverken netscape 6 eller fscommand da jeg jo ikke benytter nogen af disse!

Så dine fine links hjalp mig ikke umiddelbart.
Avatar billede nikolajdu Nybegynder
23. november 2000 - 13:34 #4
Der er noget med at man ikke må angive target i Frame-feltet, når man bruger javascript.... Du skal kalde en funktion i den html-fil der indeholder din flash film. Du kan af gode grunde ikke kalde en funktion i en frame der ikke er loadet...

Ellers må du over i Javascript kategorien for at få løst problemet...

/Nikolaj
Avatar billede nikolajdu Nybegynder
24. november 2000 - 09:25 #5
Det skal ikke forstås sådan at du ikke kan angive target. Du skal implementere det i dit Javascript og ikke sende target fra flash, men evt. variabler fra flash...

/Nikolaj
Avatar billede jytte Nybegynder
24. november 2000 - 09:25 #6
Jeg kan ikke helt følge dig ...
Hvad mener du med \"target i Frame-feltet\" ?
  taler du om det overordnede frameset der
  opdeler siden i en venstre og højre frame ?
Hvad mener du med \"kalde en funktion i den html-fil der indeholder din flash film\" ?
  mener du min venstre eller højre flash ?
Avatar billede nikolajdu Nybegynder
24. november 2000 - 09:57 #7
I dit kald fra flash skriver du

Get URL (\"java script:
f(\"flashnavnderskalsættesindivenstreframe\",
  \"side2\")\")
End On

Du bliver nødt til at skrive noget der ligner:

on (release) {
    getURL (\"flashnavnderskalsættesindivenstreframe\");
}

altså uden SIDE2, da det angiver din target frame.

I stedet skal du i din javascript funktion angive target....

Alternativt kan du bruge FScommands... Du finder en nem tutorial, hvor der sendes variabler mellem forskellige frames med FScommands her...

http://www.enetserve.com/tutorials/frame.html

/Nikolaj

Kig evt. her...

http://www.flashbible.com/members/FSCommand/

http://www.flashbible.com/members/FSCommand/FlashMethods.htm

http://www.flashbible.com/members/FSCommand/Table.htm
Avatar billede nikolajdu Nybegynder
24. november 2000 - 10:12 #8
Du kunne have en flash fil i højre frame. Den kan du så kalde via flashfilmen i frame 1, med den tutorial jeg gav dig.

I filmen i højre frame kan du så loade/unloade dine nye movies...

/Nikolaj
Avatar billede jytte Nybegynder
24. november 2000 - 13:42 #9
Jeg tror vi taler lidt forbi hinanden (måske fordi jeg er nybegynder i flash og ikke helt ved hvad de forskellig indforståede flash-ord dækker over).

Lad mig først indrømme at der hvor jeg skrev
\"flashnavnderskalsættesindivenstreframe\" mente jeg \"flashnavnderskalsættesindihøjreframe\".

Det er en meget fin og lærerig tutorial du sendte mig, men der er desværre en væsentlig ting der gør at jeg ikke kan bruge den i mit tilfælde.

I \"din\" totorial\" skiftes der ikke indhold/swf-fil i object/embed-tagget på siden blank.html men der skiftes blot position/frame indeni den samme swf-fil.

I mit tilfælde skal jeg ved klik på en knap på en swf-fil placeret i et venstre html-frame skifte swf-filen i et object/embed-tag i højre html-frame ud med en anden swf-fil.

Det script jeg har vist dig virker i explorer så jeg kan altså ikke få ind i mit hoved hvorfor jeg partout skal bruge FS_Command (i et af dine fine links kan jeg jo også læse at FS_Command ikke virker i netscape 6).

Iøvrigt sætter jeg pris på din ihærdig indsats så hvis vores korrespondance resulterer i at jeg får det til at køre i netscape falder der nok nogle ekstra point at til dig.
Avatar billede jytte Nybegynder
24. november 2000 - 14:24 #10
Jeg har lige opdaget at det tilsyneladende er ordren
  anim.movie = Filnavn
som netscape ikke vil udføre. Men når jeg kigger i object/embed-tagget kan jeg også se at der ikke er noget der hedder movie i object, men at det måske hedder
  anim.src = Filnavn
Desværre hjælper det ikke på mit netscape-problem, så måske hedder det noget andet når man skal have fat på src-parameteren i embed-tagget ?
Avatar billede jytte Nybegynder
13. december 2000 - 16:18 #11
Jeg har selv løst problemet.

I første omgang var det et spørgsmål om at man for at få det til at virke i netscape skulle bruge LoadMovie-funktionen (og ikke anim.movie). Det viste sig så at der var diverse problemer med at jeg referede til noget i en ramme som ikke nødvendigvis var loaded ind endnu. Jeg blev derfor nødt til (inspireret af til http://www.moock.org/webdesign/flash/fscommand/index.html) at lave en slags ventefunktion vha. setTimeOut-javascriptfunktionen som sørger for at jeg først gør noget ved objektet når det er blevet loaded ind.

Interesserede kan se min kode nedenfor (den indeholder ikke nogen FSCommand):

var InternetExplorer = navigator.appName.indexOf(\"Microsoft\") != -1;
var anim;
var filNavn, emne;

function checkPlay() {
  if (anim.PercentLoaded()) {
    anim.Play();
  }
  else {
    setTimeout(\"checkPlay()\",10);
  }
};

function checkGotoAndPlay() {
  if (anim.PercentLoaded()) {
    anim.TGotoLabel(\"_flash0\",emne);
    anim.Play();
  }
  else {
    setTimeout(\"checkGotoAndPlay()\",10);
  };
};

function checkGoto() {
  if (anim.PercentLoaded()) {
    anim.TGotoLabel(\"_flash0\",emne);
  }
  else {
    setTimeout(\"checkGoto()\",10);
  };
};

function checkExistens()
  if (typeof(parent.frame_02.loaded) != \"undefined\") {
    anim = (InternetExplorer ? parent.frame_02.window[\"T12bp001\"] : 
                                                parent.frame_02.document[\"T12bp001\"]);
    anim.StopPlay();
    if ( (emne==\"side0\")||(emne==\"A00\") ) {
      anim.StopPlay();
      anim.LoadMovie(0,\"Shockwaves/\"+filNavn + \".swf\");
      setTimeout(\"checkGoto()\",10);
    }
    else  {
      if (sammefilm) {
        anim.TGotoLabel(\"_flash0\",emne);
        anim.Play();
      }
      else {
        if (emne.substring(0,1)==\"s\") {
          anim.LoadMovie(0,\"Shockwaves/\"+filNavn + \".swf\");
          setTimeout(\"checkPlay()\",10);
        }
        else {
          anim.LoadMovie(0,\"Shockwaves/\"+filNavn + \".swf\");
          setTimeout(\"checkGotoAndPlay()\",10);
        }
      }
    }
  }
  else {
    setTimeout(\"checkExistens()\",10);
  }
};

function f(fileName, emnenavn) {
  sammefilm = ( fileName==filNavn ) ? true : false;
  filNavn = fileName;
  emne = emnenavn;
  setTimeout(\"checkExistens()\",0);
}
Avatar billede jytte Nybegynder
13. december 2000 - 16:19 #12
Din indsats taget i betragtning accepterer jeg dine svar.
Avatar billede nikolajdu Nybegynder
13. december 2000 - 16:26 #13
Jytte Tak skal du ha´ woaw...

Selvom jeg ikke har skrevet yderligere har jeg  brudt mit hoved en del med det... Har faktisk et txt-dokument på mit skrivebord med problemstillingen, men det kan vel flyttes nu..

Anyway fedt du fik det løst... ;-)

/Nikolaj
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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