Avatar billede goje Nybegynder
12. april 2003 - 15:37 Der er 29 kommentarer og
1 løsning

Style på Iframe

Jeg roder med et javascript der sætte opacity på en Iframe. Hvordan gør man det?

Iframen hedder contentFrame.
Avatar billede -master-d- Nybegynder
12. april 2003 - 15:50 #1
Det skal du lave inden i selve filen som vises i Iframen.
Avatar billede -master-d- Nybegynder
12. april 2003 - 15:53 #2
Men så kunne du jo være smart også lave en css, som denne

<style>
div,table,tr,td {filter:alpha[opacity=60;}
</style>

og så inkludere den på siden.
Avatar billede cdc Novice
12. april 2003 - 15:54 #3
Avatar billede timealert Nybegynder
12. april 2003 - 15:58 #4
Det er ikke særlig smart at sætte opacity på en Iframe da teksten også vil blive gennemsigtig!

Gør i stedet det at du indsætter 2 <div> med samme størrelse og placering på de sider som skal være i din iframe.
Den bagerste laver du med (halv)gemmensigtig baggrund.
Den foreste bruger du til at skrive tekst i.

Det har jeg gjort her: www.centric.dk/nytdesign
Avatar billede olebole Juniormester
12. april 2003 - 16:02 #5
Avatar billede olebole Juniormester
12. april 2003 - 16:05 #6
timealert >> Det er ikke særlig smart, hvis teksten skal være halvgennemsigtig (som i /cdc's eksempel).
Den 'smarte' løsning er den, der giver det ønskede resultat. Kender man ikke ønskerne, ved man ikke, hvad der er 'smart'  ;o)
/mvh
Avatar billede goje Nybegynder
12. april 2003 - 16:30 #7
Hmmm ... kan man ikke sætte opacity via Javascript? Man kan sætte height og width, så man burde vel kunne sætte den sidste oxo?

Eksempel søges :o)
Avatar billede olebole Juniormester
12. april 2003 - 18:10 #8
function makeTrans() {
    document.all.mainFR.allowTransparency = true;
    frames.main.document.body.style.filter = "alpha(opacity=40)";
}

... forudsat din iframe har name="main" og id="mainFR"
/mvh
Avatar billede goje Nybegynder
14. april 2003 - 11:50 #9
olebole: Jeg får en fejl at mainFR er null eller ikke et objekt.

Iframe er sat ind med følgende:

              <iframe src="" name="contentFrame" id="mainFR" width="100%" marginwidth="0" height="100%" marginheight="0" align="middle" scrolling="auto" frameborder="0" style="filter: alpha(opacity=0)">

            </iframe>
Avatar billede goje Nybegynder
14. april 2003 - 11:51 #10
Scriptet til at sætte opacity:

/* Set the opacity of the Iframe */
function setIframeOpacity(opacity) {
  document.all.mainFR.allowTransparency = true;
  frames.contentFrame.document.body.style.filter = "alpha(opacity=40)";
}
Avatar billede goje Nybegynder
14. april 2003 - 11:54 #11
Hvis jeg laver koden om til: document.all.getElementById('mainFR').allowTransparency = true; virker det tilsyneladende, men så fejler den på næste linie i scriptet med "object doesn't support this property or method".
Avatar billede goje Nybegynder
14. april 2003 - 11:56 #12
Hmm .. det er vidst stadig document.all.getElementById('mainFR').allowTransparency = true; der er et problem .. nogen ideer?
Avatar billede olebole Juniormester
14. april 2003 - 12:29 #13
Ja ... skriv som jeg gjorde. Det virker og er testet.
Det, du selv skriver, er fuldstændig ude i hampen og virker med forkromet statsgaranti ingen steder.

Læg en URL til din side, så vi kan se, hvor du laver fejl (en URL ... ikke kode her, please)
Avatar billede goje Nybegynder
14. april 2003 - 13:25 #14
Avatar billede olebole Juniormester
14. april 2003 - 13:51 #15
Og et hint til, hvor du har lagt scriptet ville spare mig for at skulle lede i din kode
Avatar billede goje Nybegynder
14. april 2003 - 14:34 #16
http://www.goje.dk/inc/js/inc_fusebox.js

(Sitet er ikke lavet efter fusebox endnu, men det bliver det)
Avatar billede olebole Juniormester
14. april 2003 - 14:52 #17
Du kalder scriptet i toppen af siden ... længe inden, der eksisterer en iframe på den. Derfor har scriptet naturligvis ikke kinamands chance for at kalde iframe'en - og dokumentet i iframe'en skal også først være loaded, før du kan sætte opacity på det  ;o)

Du skal kalde funktionen fra dokumentet, der loades i iframe'en:
  <body onload="parent.makeTrans()">

/mvh
Avatar billede goje Nybegynder
14. april 2003 - 15:34 #18
Hmm .. burde det ikke oxo virke hvis man koder grimt og kalder functionen fra bunden af siden? Funktionen bliver jo defineret i toppen, men den bliver ikke kaldt før senere?
Avatar billede goje Nybegynder
14. april 2003 - 15:38 #19
D'OH!  Har fundet ud af det.
Avatar billede goje Nybegynder
14. april 2003 - 15:44 #20
Det er som om indholdet af iFramen skal refreshes (højreclick + refresh) før opacity slår igennem
Avatar billede olebole Juniormester
14. april 2003 - 15:48 #21
Lidt pudsigt ..... men prøv:
  parent.setIframeOpacity(40);location.refresh();
Avatar billede goje Nybegynder
14. april 2003 - 16:10 #22
Jeg får en "object doesn't support this property or method" når jeg tilføjer location.refresh();
Avatar billede olebole Juniormester
14. april 2003 - 16:30 #23
Undskyld .... jeg mente reload(), men det løser heller ikke problemet, da scriptet jo så går i uendelig løkke.
Det er mærkeligt, for det fungerer fint, når jeg laver det i test-dokumenter hos mig. Jeg kan ikke rigtig genskabe dit problem.

Prøv evt:
  onload="setTimeout('parent.setIframeOpacity(40)',100);"
Avatar billede goje Nybegynder
14. april 2003 - 16:32 #24
Det virker heller ikke :o/

Jeg har lige en enkelt ting jeg lige skal prøve, brb.
Avatar billede olebole Juniormester
14. april 2003 - 16:36 #25
Næ du .... det er zq da sikkert fordi, siden i iframe'en loader før hoved-dokumentet. Mit sidste 'hack' virker nok, men det her er mere sikkert:

var loaded = false;
function setIframeOpacity() {
    if (loaded) {
      document.all.mainFR.allowTransparency = true;
      frames.main.document.body.style.filter = "alpha(opacity=40)";
    } else {
      setTimeout("setIframeOpacity()",100);
    }
}
window.onload = function(){loaded=true};

Og så kald med:
  parent.setIframeOpacity();
Avatar billede olebole Juniormester
14. april 2003 - 16:38 #26
Virker det heller ikke, kan du prøve at bytte disse linier om:
      frames.main.document.body.style.filter = "alpha(opacity=40)";
      document.all.mainFR.allowTransparency = true;
Avatar billede olebole Juniormester
14. april 2003 - 16:40 #27
Du kan i øvrigt fint nøjes med denne linie, hvis du sætter filteret på dokumentet i iframe'en fra start:
  frames.main.document.body.style.filter = "alpha(opacity=40)";
Bare fyr den anden linie og sæt så styles på iframe-dokumentet  ;o)
/mvh
Avatar billede goje Nybegynder
14. april 2003 - 16:54 #28
Hmm .. der er vidst ingenting der virker .. :o((
Avatar billede olebole Juniormester
14. april 2003 - 17:03 #29
Utroligt, det kan være så svært. Jeg har ingen problemer med at få det til at virke, så det er svært at hjælpe dig yderligere
Avatar billede goje Nybegynder
14. april 2003 - 18:49 #30
Jeg prøver at rode med det igen i morgen .. men tak for hjælpen, så må vi se hvad det skyldes.
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